Главная страница
    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.56 MB
Время: 0.028 c
3-66218
Mute
2001-12-18 13:08
2002.01.21
Через ADO+ODBC к INFORMIX


1-66229
Xak
2002-01-02 22:40
2002.01.21
Как при зделать, чтобы при нажатии на кнопку открывалось ещё одно окно?(там ещё вопросы есть)


4-66403
Floyn
2001-11-21 18:01
2002.01.21
Как заставить Excel поймать посланное ему сообщение?


6-66321
SBad
2001-10-17 13:17
2002.01.21
Кто работал с протаколом SOAP


1-66283
L_Coder
2002-01-04 16:45
2002.01.21
inline()





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