Описание |
Функция 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 значение, чтобы выбрать только желательные типы файлов.
|
|
Похожие команды |
FileSearch Поиск файла в одной или более папках
FindClose Закрывает успешный FindFirst поиск файла
FindNext Находит следующий файл после успешного FindFirst
TSearchRec Запись, используемая для хранения данных в FindFirst и FindNext
| |
|
Пример кода : Ищем все подходящие под 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
|
|
| Пример кода : Ищем все каталоги выше, включая текущий |
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
|
|