Главная страница
    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
3-1103390675
cyborg
2004-12-18 20:24
2005.01.23
Вставка данных с использованием данных других полей


14-1105010425
Приболевший
2005-01-06 14:20
2005.01.23
что это ?


3-1103199897
Carmen
2004-12-16 15:24
2005.01.23
Неправильно отображаются суммы в диапазоне от 0 до -1


3-1103206423
Shizuku
2004-12-16 17:13
2005.01.23
Управляющие запросы


14-1104075275
Чеширский_Кот
2004-12-26 18:34
2005.01.23
Господа, с наступающим Новым Годом!





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