Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.21;
Скачать: CL | DM;

Вниз

Поиск, оптимизация.   Найти похожие ветки 

 
XenonXX ©   (2003-08-08 08:22) [0]

words:array of string;

....

procedure FindAll(dir,filename:string);
var data:TSearchRec;
s:string;
i:integer;
p:boolean;
l:TListItem;
icon:Hicon;
ic:Ticon;
t:pchar;
w:word;
begin
try
dir:=Slesh(dir);
s:=dir+"*";
inc(e);
if FindFirst(s,faAnyFile,data)=0 then
begin
repeat
if (data.Name<>".")and(data.Name<>"..") then
begin
s:=ExtractFileExt(data.Name);
if (length(s)<4)and((data.Attr and faDirectory) <> 0)
then begin
s:=dir+data.Name;
FindAll(s,filename)
end
else begin
if (pos(filename,data.Name)<>0)or(filename="") then
begin
p:=true;
IF high(words)<>-1 then
begin
Form1.Memo1.Clear;
Form1.Memo1.Lines.LoadFromFile(dir+data.Name);
for i:=low(words) to high(words) do
if pos(words[i],Form1.Memo1.Text)=0 then begin
Application.ProcessMessages;
p:=false;
break;
end;
end;
if p=true then begin
l:=form1.ListView1.Items.Add;
l.Data:=GetMemory(255);
{string}tt(l.Data^):=dir+data.Name;
l.Caption:=data.Name;
t:=pchar(dir+data.Name);
s:=rr("\"+ExtractFileExt(dir+data.Name),"");
s:=rr("\"+s+"\DefaultIcon","");
t:=pchar(copy(s,1,pos(",",s)-1));
s:=copy(s,pos(",",s)+1,length(s)-pos(",",s));
w:=StrToInt(s);
icon:=ExtractIcon(HInstance, t,w);
ic:=TIcon.Create;
ic.Handle:=icon;
l.ImageIndex:=form1.ImageList1.AddIcon(ic);
end;
end;
end;
end;
Application.ProcessMessages;
if stop then begin
FindClose(data);
exit;
( data) words:array of string;

....

procedure FindAll(dir,filename:string);
var data:TSearchRec;
s:string;
i:integer;
p:boolean;
l:TListItem;
icon:Hicon;
ic:Ticon;
t:pchar;
w:word;
begin
try
dir:=Slesh(dir);
s:=dir+"*";
inc(e);
if FindFirst(s,faAnyFile,data)=0 then
begin
repeat
if (data.Name<>".")and(data.Name<>"..") then
begin
s:=ExtractFileExt(data.Name);
if (length(s)<4)and((data.Attr and faDirectory) <> 0)
then begin
s:=dir+data.Name;
FindAll(s,filename)
end
else begin
if (pos(filename,data.Name)<>0)or(filename="") then
begin
p:=true;
IF high(words)<>-1 then
begin
Form1.Memo1.Clear;
Form1.Memo1.Lines.LoadFromFile(dir+data.Name);
for i:=low(words) to high(words) do
if pos(words[i],Form1.Memo1.Text)=0 then begin
Application.ProcessMessages;
p:=false;
break;
end;
end;
if p=true then begin
l:=form1.ListView1.Items.Add;
l.Data:=GetMemory(255);
{string}tt(l.Data^):=dir+data.Name;
l.Caption:=data.Name;
t:=pchar(dir+data.Name);
s:=rr("\"+ExtractFileExt(dir+data.Name),"");
s:=rr("\"+s+"\DefaultIcon","");
t:=pchar(copy(s,1,pos(",",s)-1));
s:=copy(s,pos(",",s)+1,length(s)-pos(",",s));
w:=StrToInt(s);
icon:=ExtractIcon(HInstance, t,w);
ic:=TIcon.Create;
ic.Handle:=icon;
l.ImageIndex:=form1.ImageList1.AddIcon(ic);
end;
end;
end;
end;
Application.ProcessMessages;
if stop then begin
FindClose(data);
exit;
end;
until FindNext(data)<>0;
end;
FindClose(data);

except
end;
end;


Вот, думаю поймете, но как сделать быстрее?


 
Palladin ©   (2003-08-08 08:34) [1]

быстрее в FAQ


 
NAlexey ©   (2003-08-08 09:10) [2]

Я не понял...


 
[lamer]Barmaglot ©   (2003-08-08 09:24) [3]

Если по простому, то http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=1015254946&n=19
Если хочешь быстрее и есть желание разбираться, то: http://www.delphimaster.ru/articles/shell.html



Страницы: 1 вся ветка

Текущий архив: 2003.08.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
14-68497
Мг. Гад
2003-08-05 23:37
2003.08.21
Усех сосчитаю


14-68544
Yanis
2003-07-30 15:20
2003.08.21
Автозаполнение


3-68178
Alik$
2003-07-28 22:21
2003.08.21
ASCII как можно в таблице базы подсчитать контрольные суммы


3-68236
galexis
2003-07-24 11:49
2003.08.21
Можно ли с помощью SQL запроса очистить таблицу?


1-68289
Micah'GF
2003-08-06 16:57
2003.08.21
Избавиться от мигания TImage