delphi做乙個本地網頁的搜尋引擎。

2021-04-12 18:00:04 字數 4930 閱讀 9841

delphi做乙個本地網頁的搜尋引擎。

思路:1、建立本地網頁的索引;2、在索引裡面搜尋關鍵字;3輸出查詢的結果。

第一步、檢索因。

procedure twebthread.getfilelist(astrings: tstrings; asourfile,//查詢本地網頁

filename: string);

var sour_path,sour_file: string;

filerec, subfilerec:tsearchrec;

i,n: integer;

web:string;

begin

tryn := 0;

if rightstr(trim(asourfile), 1) <> '/' then

sour_path :=trim(asourfile) + '/'

else

sour_path :=trim(asourfile);

sour_file:= filename;

if not directoryexists(sour_path) then

begin

astrings.clear;

exit;

end;

if findfirst(sour_path+'*.*',faanyfile,filerec) = 0 then

repeat

if ((filerec.attr and fadirectory) <> 0) then

begin

if ((filerec.name<> '.') and (filerec.name  <> '..')) then

getfilelist(astrings, sour_path+ filerec.name + '/',  sour_file);

endelse

if findfirst(sour_path + filename,faanyfile,subfilerec) = 0 then

repeat

if ((subfilerec.attr and fadirectory) = 0)and(pos(sour_path+subfilerec.name,tmplist.text)=0) then

begin

path:=sour_path+subfilerec.name;

gettitle(path);

postdata(path, gettitle(path),' *');

end;

until findnext(subfilerec)<>0;

until findnext(filerec)<>0;

sysutils.findclose(filerec);

except

end;

end;

function twebthread.gettitle(ml: string): string;

vari,j ,n,p:integer;

s,m,s1 :widestring;

begin

fupdate.memo2.lines.clear;

fupdate.memo2.lines.loadfromfile(ml);

s :=memo2.text;

s1 := '';

//**********===查詢網頁標題******************************=

i:=pos('',s);

if i =0 then

i := pos('',s);

s:=copy(s,i+7,length(s)-i-7);//

j:=pos('',s);

if j =0 then

j:=pos('',s);

m:=copy(s,1,j-1);//

result := m;

//**********===查詢網頁內容******************************=

n := pos('id=zoom>',s)+8;

if n-8 >0 then

s1 := rightstr(s,length(s)-n);

if s1 <>'' then

p := pos('',s1);

content := trim(uppercase(leftstr(s1,p)));

if length(content)>300 then

content := leftstr(content,300);

//**********===過濾關鍵字******************************=

content := ansireplacestr(content,'

content := ansireplacestr(content,'/','');

content := ansireplacestr(content,'>','');

content := ansireplacestr(content,'br','');

content := ansireplacestr(content,'p','');

content := ansireplacestr(content,'td','');

content := ansireplacestr(content,'tr','');

content := ansireplacestr(content,'nbs;','');

content := ansireplacestr(content,'nbsp;','');

content := ansireplacestr(content,'&','');

if trim(content)='' then

content := '*';

end;

procedure twebthread.postdata(temp, temp1, te***: string);//索引儲存資料庫

begin

trytemp := uppercase(temp);

if (temp<>'') then

if (temp1<>'')then

begin

temp := rightstr(temp,length(temp)-pos('knowledgeb',temp));

with fupdate.adoqpub do

begin

close;

sql.clear;

sql.add('insert into web(path,title,content) values(:a1,:a2,:a3)');

parameters.parambyname('a1').value := temp;

parameters.parambyname('a2').value := temp1;

parameters.parambyname('a3').value := content;

execsql;

end;

end;

except

end;     

end;

第二步、查詢多個關鍵字(多個關鍵字要空格隔開)

procedure tmainform.speedbutton1click(sender: tobject);

varkey,path,title,content:string;

sqltext:string;

total,pagesize,pagecount:integer;

n,m:integer;

begin

total:=0;

pagesize:=5;

n := 0;

m:= 0;

webhtml := '';

if trim(edit2.text)='' then

begin

messagebox(handle,'關鍵字不能為空!','系統提示',mb_iconinformation+mb_ok);

edit2.setfocus;

exit;

end;

//********************===查詢多個關鍵字********************====

if pos(' ',trim(edit2.text))<=0 then

sqltext := 'select * from web where title like'+quotedstr('%'+trim(edit2.text)+'%')

else

begin

key := edit2.text;

sqltext := 'select * from web where title like '+quotedstr('%'+leftstr(trim(key),pos(' ',trim(key))-1)+'%');

key := rightstr(trim(key),length(trim(key))-pos(' ',trim(key)));

while pos(' ',trim(key))>0 do

begin

sqltext := sqltext+' and title like '+quotedstr('%'+leftstr(trim(key),pos(' ',trim(key))-1)+'%');

key := rightstr(trim(key),length(trim(key))-pos(' ',trim(key)));

next;

end;

sqltext := sqltext + ' and title like '+quotedstr('%'+trim(key)+'%');

end;

做乙個返回陣列的函式 DELPHI

1.type tarray array of string procedure trimchar s string var sret tarray function countchar s string c char integer vari integer begin result 0 for i...

要求做乙個從網頁上匯入excel

網上文章,僅作學習之用,向作者表示感謝 要求做乙個從網頁上匯入excel,開始著手去實現它。思路很簡單 1 做乙個jsp頁面,頁面包括瀏覽檔案,提交檔案 2 將excel檔案上傳到伺服器 3 伺服器對該excel檔案進行讀出 4 將excel檔案內容顯示到頁面上 環境搭建 需要準備的包 common...

做乙個明媚的女子

以前的我都是我行我素的,長大了,不僅要自己欣賞自己,更需要別人欣賞自己!1.愛笑的女孩子,運氣不會太差 2.看穿但不說穿。很多事情,只要自己心裡有數就好了,沒必要說出來。3.高興,就笑,讓大家都知道。悲傷,就假裝什麼也沒發生 4.在不違背原則的情況下 對別人要寬容 能幫就幫 千萬不要把人逼絕了 給人...