Функція 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: Файли тільки для читання
- 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.
