Примеры поиска

Наверх  Назад  Вперед |

Возможно два базовых варианта организации цикла поиска файлов. Рассмотрим оба (они равнозначны по скорости работы)

 

Вариант 1. Цикл repeat ... until

 

var

 FS : TFileSearch;

begin

 FS := TFileSearch.Create(nil);

 if FS.FindFirst('c:\*.*'then 

 repeat

  if FS.IsDir then 

   AddToLog('Найден каталог: '+FS.FileName)

  else

   AddToLog('Найден файл: '+FS.FileName)

 until not(FS.FindNext);

 FS.Free;

end.

 

Вариант 2. Цикл while

 

var

 FS : TFileSearch;

begin

 FS := TFileSearch.Create(nil);

 FS.FindFirst('c:\*.*');

 while FS.Found do begin

  if FS.IsDir then 

   AddToLog('Найден каталог: '+FS.FileName)

  else

   AddToLog('Найден файл: '+FS.FileName);

  FS.FindNext;

 end;

 FS.Free;

end.

 

Пример рекурсивного обхода каталогов

 

// Обработка найденного файла

Procedure ScanFile(AFileName : string);

begin

 SetStatusBarText(AFileName);

end;

 

// Сканирование каталога

Procedure ScanDir(ADirName : string; AScanSubDir : boolean);

var

 FS : TFileSearch;

begin

 ADirName := NormalDir(ADirName);

 FS := TFileSearch.Create(nil);

 FS.FindFirst(ADirName + '*.*');

 while FS.Found do begin

  if FS.IsDir and AScanSubDir and (FS.FileName <> '.'

    and (FS.FileName <> '..'then 

     ScanDir(ADirName + FS.FileName, AScanSubDir)

  else

   ScanFile(ADirName + FS.FileName);

  FS.FindNext;

 end;

 FS.Free;

end;

 

begin

 ScanDir('c:\', true);

end.