Форум: "Система";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];




Вниз

как быть с организацие поиска 


SERG_NENIA   (2001-09-28 08:15) [0]

Все дело в том, что я никак не пойму как организовать поиск нужного мне по расширению файла по всему диску или дирректории с поддиректориями. Есть функции, но они все требуют или конкретный
каталог или список, а где взять такой список для всего диска.



Vitaly   (2001-09-28 14:25) [1]

procedure ScanDir(dir: string);
var rc: integer;
sr: TSearchRec;
begin
rc := findFirst(dir + "\*.*", faAnyFile, sr);
while rc = 0 do begin
if (sr.Attr and faDirectory) = 0
then writeln(dir+"\"+sr.name)
else if sr.name[1] <> "." then scanDir(dir+"\"+sr.name);
rc := findNext(sr);
end;
FindClose(sr);
end;



pal-nod   (2001-09-28 18:03) [2]

{Я этоу процедуру использую для поиска MP3 на своем компе.

ЗЫ dirs - имя диска или диска с папкой. Не забудь произвести поиск
в папке dirs |процедура этого не предусматривает!!!!|
ЗЫЫ В процедуре Виталия есть недоработки!
ЗЫЫЫ Да кстати помогите мне с импортом из Делфи 5,5 в Excel(любой
желательно в 2000)!!!}

procedure FindDir1(dirs: string);
var
Info: TSearchRec;
begin
findfirst(dirs+"*.*",$10,info);
if (info.attr and 16=16)and(info.name <> ".")and(info.name <> "..")then
begin
listbox1.items.add(dirs+info.name+"\");
end;
while findnext(info)=0 do
begin
if (info.attr and 16=16)and(info.name <> ".")and(info.name<>"..")
then begin
application.ProcessMessages; {чтоб прога отвечала при поиске}
listbox1.items.add(dirs+info.name+"\");
FindDir1(dirs+info.name+"\");
end;
end;
Findclose(info);
end;



Pal-nod   (2001-09-28 18:18) [3]

{Я этоу процедуру использую для поиска MP3 на своем компе.

ЗЫ dirs - имя диска или диска с папкой. Не забудь произвести поиск
в папке dirs |процедура этого не предусматривает!!!!|
ЗЫЫ В процедуре Виталия есть недоработки.

procedure FindDir1(dirs: string);
var
Info: TSearchRec;
begin
findfirst(dirs+"*.*",$10,info);
if (info.attr and 16=16)and(info.name <> ".")and(info.name <> "..")
then begin
ListBox1.Items.Add(dirs+info.name+"\");
end;
while (findnext(info)=0)and(stop<>1) do begin
if (info.attr and 16=16)and(info.name <> ".")and(info.name <> "..")
then begin
application.ProcessMessages;{Чтоб прога не висла и овечала!}
ListBox1.Items.Add(dirs+info.name+"\");
FindDir1(dirs+info.name+"\");
end;
end;
Findclose(info);
end;



VT   (2001-10-08 06:56) [4]

Господа, а вы бы погоняли свои процедуры на больших массивах данных. Рекурсия - вещь хорошая, но...



Anatoly Podgoretsky   (2001-10-08 21:30) [5]

Предложи вариант без рекурсии




Форум: "Система";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.04 c
1-66289           LAlex                 2002-01-04 18:38  2002.01.21  
Искуственный интеллект


7-66377           Sirgo                 2001-10-07 13:51  2002.01.21  
Температура процесора и системы


14-66350          Феликс                2001-11-24 00:31  2002.01.21  
Помогите сделать такой скрипт


3-66201           TYuri                 2001-12-18 14:01  2002.01.21  
Oracle


1-66241           Raven                 2001-12-28 17:15  2002.01.21  
Потоки