Главная » Free Pascal » Управление файлами в стиле Windows Free Pascal

0

В режиме совместимости с Delphi система Free Pascal поддерживает доволь- но много процедур и функций по управлению каталогами и двоичными файлами. В большинстве своем новые процедуры используют числовые атрибуты — хэндлы (от англ. handle), которые операционная система присваивает файлам при их соз- дании или открытии:

hF:=FileCreate(f_name);  {создание нового файла с указанным именем} hF:=FileOpen(f_name, mode); {открытие существующего файла}

Имя файла f_name — выражение или переменная типа string. Режим работы открываемого файла определяется двоичным кодом mode, который формируется

как логическая сумма из нужных наборов признаков (каждый из признаков соот- ветствует двоичному разряду в шкале mode):

± fmOpenRead — для ввода;

± fmOpenWrite — для вывода;

± fmOpenReadWrite — для ввода и вывода;

± fmShareExclusive — с запретом доступа из других программ;

± fmShareDenyWrite — с запретом записи для других программ;

± fmShareDenyRead — с запретом чтения из других программ;

± fmDenyNone — с разрешением любого доступа из других программ.

Например:

hF:=FileOpen(‘1.txt’,fmOpenRead or fmShareDenyRead);

Хэндл hF играет такую же роль, как и переменная файлового типа. Например, для закрытия файла надо обратиться к процедуре FileClose:

FileClose(hF);

Функции чтения и записи здесь выглядят более естественно:

kr:=FileRead(hF, buf, count); kw:=FileWrite(hF, buf, count);

Здесь:

± buf — адрес буфера в оперативной памяти, участвующего в обмене;

± count — количество байтов, заказанных программой.

В переменные kr и kw возвращается фактическое количество байтов, которые удалось прочитать или записать.

Для перехода к байту с указанным номером (т. е. для организации прямого дос- тупа) используется функция FileSeek:

pos:=FileSeek(hF,Offset,Origin);

Указатель файла, скрытый от пользователя, определяет номер текущего дос- тупного байта, или, как говорят, текущую позицию в файле. Аргумент Offset зада- ет смещение в байтах, определяющее новую позицию указателя относительно точ- ки, на которую указывает параметр Origin. Если этой точкой является  начало файла, то следует задавать Origin=0. Если смещение отсчитывается от текущей позиции указателя, третий аргумент должен быть равен 1. Значение Origin=2 опре- деляет, что точкой отсчета является конец файла. Функция FileSeek возвращает число типа integer — новую позицию указателя файла.

С помощью логической функции FileExist(f_name) можно проверить, суще-

ствует ли файл с указанным именем. Логическая функция DeleteFile(f_name) воз- вращает значение True, если она удалила файл с указанным именем.

Операционная система поддерживает довольно много процедур и функций по манипуляции с атрибутами файлов, по расчленению и объединению компонентов имени (путь, имя, расширение), по управлению каталогами (создание, переимено- вание, удаление), по поиску файлов, чьи имена удовлетворяют заданному шаблону поиска (FindFirst, FindNext, FindClose) и др. Дополнительную информацию по форматам вызова этих подпрограмм вы можете найти в файле помощи Win32.hlp1.

1 Поиск этого файла попробуйте выполнить в Интернете. — Прим. ред.

Источник: Кетков, Ю. Л., Свободное программное обеспечение. FREE PASCAL для студентов и школьников, Ю. Л. Кетков, А. Ю. Кетков. — СПб.: БХВ-Петербург, 2011. — 384 с.: ил. + CD-ROM — (ИиИКТ)

По теме:

  • Комментарии