Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000555.doc
Скачиваний:
31
Добавлен:
30.04.2022
Размер:
19.12 Mб
Скачать

2.10.4. Поиск файлов

Для поиска файлов используются функции FindFirst, FindNext и FindClose.

Функция FindFirst - первая функция, которая запускается в начале поиска, в приведенном ниже примере ее значение присваивается переменной Rez. Если поиск прошел успешно, то значение переменной Rez станет равно нулю.

Функция FindFirst имеет следующие параметры:

FindFirst(Маска поиска, Атрибуты, Информация);

  • Первый параметр функции FindFirst - маска поиска.

Если указать конкретный файл, то функция найдет именно его.

Можно также искать также и целые группы файлов. Например, можно запустить поиск всех файлов в корневом каталоге диска С:. Для этого первый параметр должен быть определен как — 'с:\*.*'. Для поиска только EXE-файлов в папке Fold вы должны указать — 'с: \Fold\* .ехе'.

  • Второй параметр функции FindFirst — это атрибуты, используемые при поиске файлов.

Искать файлы можно по следующим атрибутам:

  • faAnyFile. - искать любые файлы;

  • faReadOnly — искать файлы с атрибутом Readonly (только для чтения);

  • faHidden — искать скрытые файлы;

  • faSysFile — искать системные файлы;

  • faArchive — искать архивные файлы;

  • faDirectory — искать папки.

  • Третий и последний параметр функции FindFirst — это структура, в которой вернется информация о поиске файла, а именно – имя найденного файла, размер, время создания и т. д. Параметр информация имеет тип структуры TsearchRec, которая выглядит так:

type

TSearchRec = record

Time: Integer; // Время создания найденного файла

Size :; // Размер найденного файла

Attr: Integer; // Атрибуты найденного файла

Name: FileName; // Имя найденного файла

ExcludeAttr: Integer; // Исключаемые атрибуты найденного файла

FindHandle: THandle; // Указатель, необходимый для поиска

FindData : TVin32FindData; // Структура поиска файла Winndows

End;

Функция FindNext(SearchRec) – вторая функция, которая заставляет найти следующий файл, удовлетворяющий параметрам, указанным в функции FindFirst. Этой функции нужно передать структуру SearchRec, по которой будет определено, на каком месте сейчас остановлен поиск, и с этого момента он будет продолжен. Как только будет найден новый файл, функция вернет в структуре SearchRec информацию о новом найденном файле.

Функция FindClose(SearchRec) закрывает поиск. В качестве единственного параметра нужно указать все ту же структуру SearchRec.

В качестве примера поиска файлов рассмотрим процедуру получения имен файлов с расширением .doc в текущей папке и вывода их на экран.

После описания переменных запускаем поиск с помощью функции FindFirst. В качестве первого параметра передается папка '\*.doc', в которой ищутся согласно директиве faAnyFile все файлы с расширением doc. Дальше запускаем цикл while Rez = 0, в котором вызываем функцию FindNext. Когда переменная Rez станет не равной нулю, поиск закончится. Функция FindClose закрывает поиск.

procedure WriteFileList;

var

Fn: TSearchRec;

Rez: Integer;

begin

Rez := FindFirst('\*.doc', faAnyFile, Fn);

while Rez = 0 do

begin

writeln(Fn.Name); // вывод имени найденного файла

Rez := FindNext(Fn);

End;

FindClose(Fn);