Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

Поиск фаила в каталоге и его подкаталогах   Найти похожие ветки 

 
кактусбел ©   (2004-12-03 20:10) [0]

Уважаемый мастера вопрос по сабжу
как провести поиск фаилов определенного типа(типа *.exe) в каталоге и во всех его подкаталогах
у меня есть алгоритм основанный на рекурсии но он глючит

Заранее спасибо.


 
grigory ©   (2004-12-03 21:03) [1]

procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Clear; // очистка списка файлов
FindFile(Edit1.Text); // поиск файлов с начальными условиями, заданных в Edit1
end;

Созданная вручную процедура поиска:

procedure TForm1.FindFile(Dir:String);
Var SR:TSearchRec;
   FindRes:Integer;
begin
FindRes:=FindFirst(Dir+"*.*",faAnyFile,SR);
While FindRes=0 do
  begin
     if ((SR.Attr and faDirectory)=faDirectory) and
     ((SR.Name=".")or(SR.Name="..")) then
        begin
           FindRes:=FindNext(SR);
           Continue;
        end;

     if ((SR.Attr and faDirectory)=faDirectory) then // если найден каталог, то
        begin
           FindFile(Dir+SR.Name+"\"); // входим в процедуру поиска с параметрами текущего каталога + каталог, что мы нашли
           FindRes:=FindNext(SR); // после осмотра вложенного каталога мы продолжаем поиск в этом каталоге
           Continue; // продолжить цикл
        end;

     ListBox1.Items.Add(SR.Name);
     FindRes:=FindNext(SR);
  end;
FindClose(SR);
end;


 
grigory ©   (2004-12-03 21:04) [2]

а в маску поиска вместо *.* напишешь *.exe
ну и путь свой указываешь, где искать хочешь!


 
novice__man   (2004-12-03 21:12) [3]

кактусбел ©   (03.12.04 20:10)  

Уважаемый мастера вопрос по сабжу
как провести поиск фаилов определенного типа(типа *.exe) в каталоге и во всех его подкаталогах
у меня есть алгоритм основанный на рекурсии но он глючит


Новое слово в программировании ГЛЮЧНЫЙ АЛГОРИТМ!!!!!!

FindFirst & FindNext F1 !!!


 
Fay ©   (2004-12-03 21:35) [4]

2 grigory ©   (03.12.04 21:03) [1]
>> ((SR.Name=".")or(SR.Name=".."))
А так не проще?
SR.Name[1] = "."


 
grigory ©   (2004-12-03 21:42) [5]

:)) проще, но это как говорится дело техники, а суть вроде такая. я просто дал код куска проги:)))


 
Игорь Шевченко ©   (2004-12-03 21:55) [6]

Fay ©   (03.12.04 21:35) [4]

Не проще, а в ошибочно


 
Anatoly Podgoretsky ©   (2004-12-03 22:02) [7]

Fay ©   (03.12.04 21:35) [4]
Проще, но толку то?


 
Jel ©   (2004-12-03 23:53) [8]


> Не проще, а в ошибочно

А, собственно почему ошибочно? Всегда использую и пока не нарвался на грабли. В чем они?


 
Игорь Шевченко ©   (2004-12-03 23:57) [9]


> А, собственно почему ошибочно?


А потому, что создавать каталог, начинающийся с точки никому не запрещено.


 
Jel ©   (2004-12-04 00:02) [10]


> создавать каталог, начинающийся с точки никому не
> запрещено.

Спасибо. Считал, что этого не даст сделать система. Кстати, проверил - Explorer ругает за некорректное имя, а вот из FAR создался запросто.


 
Fay ©   (2004-12-04 02:17) [11]

Прикольно. Я Проводником проверял - думал, что это хорошая проверка 8).
Спасибочки.


 
кактусбел ©   (2004-12-05 14:57) [12]

Большое вам всем спасибо !!!
удачи.


 
Anatoly Podgoretsky ©   (2004-12-05 15:14) [13]

Сумасшедший программист ©   (05.12.04 14:57) [8]
И файлы тоже, например характерный файл .forward


 
Jel ©   (2004-12-05 20:22) [14]


> Anatoly Podgoretsky ©   (05.12.04 15:14) [13]

Спасибо за новый ник. :) Файл, однако не будет иметь атрибута faDirectory.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.036 c
1-1104945549
zt50
2005-01-05 20:19
2005.01.23
Поиск в stringlist e


14-1105031098
sniknik
2005-01-06 20:04
2005.01.23
Ламер - это чайник, который уверен, что он круто заварен.


3-1103545326
ivc_andr
2004-12-20 15:22
2005.01.23
Как переустановить драйвер ODBC в Win 2000 Server?


14-1105004976
syte_ser78
2005-01-06 12:49
2005.01.23
try except


1-1104922884
vario
2005-01-05 14:01
2005.01.23
В GroupBox надо отследить переполнение Caption





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