|
Примеры поиска |
Наверх Назад Вперед | |
|
Возможно два базовых варианта организации цикла поиска файлов. Рассмотрим оба (они равнозначны по скорости работы)
Вариант 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. |