Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск фаила в каталоге и его подкаталогах [D7, WinXP]


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

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

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


Jel   (2004-12-05 20:22:00) [1]


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

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


Anatoly Podgoretsky   (2004-12-05 15:14:00) [2]

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


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

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


Fay   (2004-12-04 02:17:00) [4]

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


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


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

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


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


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


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


Jel   (2004-12-03 23:53:00) [7]


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

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


Anatoly Podgoretsky   (2004-12-03 22:02:00) [8]

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


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

Fay ©   (03.12.04 21:35) [4]

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


grigory   (2004-12-03 21:42:00) [10]

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


Fay   (2004-12-03 21:35:00) [11]

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


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

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

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


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

FindFirst & FindNext F1 !!!


grigory   (2004-12-03 21:04:00) [13]

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


grigory   (2004-12-03 21:03:00) [14]

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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо