Форум: "Система";
Текущий архив: 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]Предложи вариант без рекурсии
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c