...

Листинг 4.25.

Использование функции SearchlnFolder

//Запуск поиска файла в заданной папке

procedure TForm2.Button1Click(Sender: TObject);

var

flags: DWORD;

begin

//Формируем набор атрибутов (по установленным флажкам на форме)

flags := 0;

if (chkDirs.Checked) then flags := flags or FILE_ATTRIBUTE_DIRECTORY;

if (chkHidden.Checked) then flags := flags or FILE_ATTRIBUTE_HIDDEN;

if (chkSystem.Checked) then flags := flags or FILE_ATTRIBUTE_SYSTEM;

if (chkReadOnly.Checked) then flags := flags or FILE_ATTRIBUTE_READONLY;

if (chkArchive.Checked) then flags := flags or

FILE_ATTRIBUTE_ARCHIVE;

lblFound.Caption := \'Поиск…\

lstFiles.Clear;

Refresh;

//Поиск (файлы записываются прямо в список на форме)

if not SearchInFolder(txtFolder.Text, txtMask.Text, flags,

lstFiles.Items)

then

lblFound.Caption := \'Поиск не дал результатов\'

else

lblFound.Caption := \'Найдено объектов: \' +

IntToStr(lstFiles.Count);

end;

Поиск по всему дереву каталогов

В листинге 4.26 приводится одна из возможных реализаций рекурсивного поиска по дереву каталогов. Алгоритм поиска работает следующим образом.

1. Выполняется поиск в папке folder (все найденные файлы или папки добавляются в список names).

2. Функция SearchlnTree вызывается для каждого подкаталога BfoLder для продолжения поиска в поддереве, определяемом подкаталогом.

Загрузка...