Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.003 c
1-66310
Александр Давыдов
2002-01-04 20:06
2002.01.21
сканирование каталогов


1-66239
vlv
2001-12-29 19:40
2002.01.21
*.icl


1-66255
net_phoenix
2002-01-03 19:51
2002.01.21
COM обьекты Использование серверов для связи с MS OFFICE програмами


1-66308
Андре
2002-01-03 15:07
2002.01.21
Закрытие формы в onCreate


1-66259
Quest
2001-12-29 09:44
2002.01.21
Пропадает каретка в режиме редактирования ячейки TStringGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский