Главная страница
    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-66293
BFG
2002-01-04 21:18
2002.01.21
Mortal Combat 4


3-66179
AndyFirst
2001-12-15 16:11
2002.01.21
Проблема с чтением Character-поля в DBF-таблице


4-66398
Delfin
2001-11-21 12:39
2002.01.21
Как в IE получить доступ к строке адреса


1-66245
Snake
2002-01-02 17:21
2002.01.21
Запись графики в поток


3-66218
Mute
2001-12-18 13:08
2002.01.21
Через ADO+ODBC к INFORMIX





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский