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

Наверх  Предыдущая  Последующая |

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

 

Вариант 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.