Функция FindFirst в Delphi находит все файлы, соответствующие маске файла и атрибутов.
SysUtils unit
function FindFirst (const FileMask : string; Attributes : Integer; var SearchResult : TSearchRec) : Integer;
Функция FindFirst ищет файлы, соответствующие FileMask и Attributes, возвращая первое соответствие (если найдено) в SearchResult.
Attributes определяют файлы, для поиска в дополнение к правильным файлам.
Если соответствие найдено, то возвращаемое значение — 0, иначе, оно отрицательное (и запись не заполняется).
FileMask может содержать путь, так же как имя файла. Имя файла может содержать символы — шаблоны:
?: Соответствие любого одного символа *: Соответствие 0, 1 или более символов
Attributes могут быть установлены следующим образом:
- faAnyFile: Любой файл
- faReadOnly: Файлы nолько для чтения
- faHidden: Скрытые файлы
- faSysFile: Системные файлы
- faVolumeID: файлы идентификатора объема
- faDirectory: Файлы каталоги
- faArchive: Архивные файлы
Вы можете установить один или более из вышеупомянутых атрибутов, связывая их.
Запись SearchResult включает много полей. Некоторые используются последующими запросами к FindNext. Другие доступны вашей программе:
- Name: Из длинного названия найденного файла
- Size: Размер файла в байтах
- Time: Дата/время последнего изменения файла
- Attr: атрибуты файла (как выше)
Предупреждение.
Вы должны вызвать FindClose после успешного FindFirst, когда Вы закончили искать. Это освобождает ресурсы, взятые процессом поиска.
Если FileMask не содержит никакой информации пути, то поиск будет проводится в текущем каталоге.
Поскольку параметр Attributes определяет дополнительные типа файлов для поиска, Вы должны фильтровать результаты Attr значение, чтобы выбрать только желательные типы файлов.
Функция FindFirst: Ищем все подходящие под Unit1.d* файлы в текущем каталоге
var
searchResult : TSearchRec;
begin
// Пытаемся найти правильные файлы, соответствующие Unit1.d* в текущем каталоге
if FindFirst('Unit1.d*', faAnyFile, searchResult) = 0 then
begin
repeat
ShowMessage('Имя файла = '+searchResult.Name);
ShowMessage('Размер файла = '+IntToStr(searchResult.Size));
until FindNext(searchResult) <> 0;
// Должен освободить ресурсы, используемые этими успешными, поисками
FindClose(searchResult);
end;
end;
Результат
Имя файла = Unit1.dcu
Размер файла = 4382
Имя файла = Uni1.dfm
Размер файла = 524
Имя файла = Uni1.ddp
Размер файла = 51
Функция FindFirst: Ищем все каталоги выше, включая текущий
var
searchResult : TSearchRec;
begin
// Пробуем найти каталоги выше текущего каталога
SetCurrentDir('..');
if FindFirst('*', faDirectory, searchResult) = 0 then
begin
repeat
// Показываем только каталоги
if (searchResult.attr and faDirectory) = faDirectory
then ShowMessage('Directory = '+searchResult.Name);
until FindNext(searchResult) <> 0;
// Должен освободить ресурсы, используемые этими успешными, поисками
FindClose(searchResult);
end;
end;
Результат
Directory = .
Directory = ..
Directory = Bin
Directory = Help
Directory = Projects
Directory = Demos
Directory = Lib
Directory = Objrepos
Directory = MergeModules
Directory = Imports
Directory = Source
Directory = Rave5
Directory = Ocx
Похожие функции, процедуры и команды
FileSearch — поиск файла в одной или более папках.
FindClose — закрывает успешный FindFirst поиск файла.
FindNext — находит следующий файл после успешного FindFirst.
TSearchRec — запись, используемая для хранения данных в FindFirst и FindNext.
