Главная страница
    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.034 c
1-1105624513
horse
2005-01-13 16:55
2005.01.23
TRegistry


3-1102955048
Dmitrich
2004-12-13 19:24
2005.01.23
Большой текст


3-1103562474
Ivan_
2004-12-20 20:07
2005.01.23
Не обязательный параметр у хранимой процедуры


1-1105007719
Viola
2005-01-06 13:35
2005.01.23
Добавление текста


3-1103597258
Black
2004-12-21 05:47
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский