Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.23;
Скачать: CL | DM;

Вниз

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

 
кактусбел ©   (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 вся ветка

Текущий архив: 2005.01.23;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.04 c
14-1104765928
Piter
2005-01-03 18:25
2005.01.23
Быстрый способ вырезать строку


3-1103479113
SergP
2004-12-19 20:58
2005.01.23
SQL. Можно ли использ. знач. поля одной табл. как имя другой?


6-1099305174
pavel_guzhanov
2004-11-01 13:32
2005.01.23
Взаимодействие Indy серверов


1-1105039658
t4
2005-01-06 22:27
2005.01.23
Пересылка переменной из dll


1-1105452842
saNat
2005-01-11 17:14
2005.01.23
Выделенный пункт в ListBox