Показать сообщение отдельно
  #2  
Старый 07.11.2006, 02:22
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Ну если только начала, тогда распишу поподробней.

FindFirst - функция, которая найдет первый файл, удовлетворяющий условию поиска (маске). Функция вернет 0 если файл найден, в противном случае вернет код ошибки.

FindNext - ищет следующий файл, удовлетворяющий условию поиска (маске). Возвращает результат, аналогичный FindFirst.

Пример, который найдет все файлы в директории
Код:
 procedure GetAllFiles( Path: string );
 var
  sRec: TSearchRec;
  isFound: boolean;
 begin
   isFound := FindFirst( Path + '\*.*', faAnyFile, sRec ) = 0;
   while isFound do
   begin
      if ( sRec.Name <> '.' ) and ( sRec.Name <> '..' ) then
         if ( sRec.Attr and faDirectory ) <> faDirectory then
            Memo1.Lines.Add( Path + '\' + sRec.Name );
      isFound := FindNext( sRec ) = 0;
   end;
   FindClose( sRec );
 end; 

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   GetAllFiles( 'C:\WINDOWS' );
 end;

Если искать надо еще и в поддиректориях, тогда процедура должна быть рекурсивной, то есть вызывать сама себя.

Код:
 procedure GetAllFiles( Path: string );
 var
  sRec: TSearchRec;  
  isFound: boolean;
 begin
   isFound := FindFirst( Path + '\*.*', faAnyFile, sRec ) = 0;
   while isFound do
   begin
      if ( sRec.Name <> '.' ) and ( sRec.Name <> '..' ) then
      begin
         if ( sRec.Attr and faDirectory ) = faDirectory then
            GetAllFiles( Path + '\' + sRec.Name );
         // Memo1.Lines.Add( Path + '\' + sRec.Name );
         // В этом месте ты знаешь, что найден файл,
         // можешь запускать поиск в нем...
      end;
      isFound := FindNext( sRec ) = 0;
   end;
   FindClose( sRec );
 end; 

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   GetAllFiles( 'C:\WINDOWS' );
 end;

В принципе этого достаточно, чтобы решить твою задачу... Ну а появятся вопросы, обращайся.

P.S.
Код писал прямо здесь, так что возможны опечатки...
Ответить с цитированием