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

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

Previous pageReturn to chapter overviewNext page

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

 

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