Главная » Free Pascal » Процедуры и функции общего характера Free Pascal

0

Перечень системных функций и процедур общего характера приведен  в табл. 10.1. Процедуры, аргументы которых включают имя переменной vf файлово- го типа, могут применяться к файлам любого типа.

Таблица 10.1

Формат обращения

Выполняемое действие

Chdir(‘path’)

Смена текущего каталога

Eof(vf)

Опрос ситуации "исчерпание данных"

Erase(vf)

Удаление файла

Flush(vf)

Выталкивание содержимого буфера обмена в файл

Getdir(n_d, str)

Опрос имени текущего каталога на указанном диске

Ioresult

Опрос признака завершения файловой операции

Mkdir(‘path’)

Создание нового каталога

Rename(vf,‘new_name’)

Переименование файла

Rmdir(‘path’)

Удаление пустого каталога

Полный идентификатор дискового файла (полная спецификация файла), необ- ходимый для определения его места на диске, состоит из двух компонентов — пу- ти, содержащего иерархию вложенных каталогов, и собственно имени файла. На- пример:

f:\FPC\MyProg\comp_all.exe

Путь начинается с имени логического диска (в примере — f:). За логическим диском следует каталог 1-го уровня, вложенный в корневое оглавление (в приме- ре — FPC). Далее следует каталог 2-го уровня, вложенный в предыдущий каталог (в примере — MyProg). Последней компонентой  полной спецификации является имя файла (в примере — comp_all) и его расширение (в примере — exe). Термин "текущий каталог" по отношению к выполняющейся программе относится к ката- логу, из которого эта программа была запущена. Если файл данных, к которому обращается программа, находится в текущем каталоге, то при его назначении в процедуре Assign можно ограничиться укороченным именем — собственно име- нем файла и его расширением. В противном случае мы должны указывать полную спецификацию файла. На каждом логическом диске в текущий момент времени один из его каталогов является текущим. Для опроса этой информации предназна- чена процедура GetDir. Ее первый аргумент — число из диапазона [0, 26] опреде- ляет номер опрашиваемого диска (0 — текущий диск, 1 — диск A:, 2 — диск B:, 3 — диск С:, …). Наименование текущего каталога на опрашиваемом диске зано- сится в строковую переменную str.

По соображениям удобства бывает полезно изменить имя текущего каталога на

имя другого каталога, в котором находятся обрабатываемые файлы данных. Для этой цели используется процедура Chdir (от англ. change directory — изменить ка- талог). После этой операции мы можем пользоваться укороченными именами фай- лов, а не их полными спецификациями.

Программа имеет возможность создать новый каталог для хранения своих дан- ных (процедура Mkdir — от англ. make directory) или уничтожить каталог, в кото- ром она создавала временные файлы. Перед удалением такого каталога все вре- менные файлы должны быть уничтожены с помощью процедуры Erase. Удаляемый файл предварительно должен быть закрыт. Процедура Rmdir (от англ. remove directory удалить каталог) может удалить только пустой каталог.

Довольно часто используемой функцией является логическая функция EOF, воз- вращающая значение True, если данные в файле уже исчерпаны. Возвращаемое значение False означает, что данные из файла еще можно читать.

Еще одна полезная функция, которую программисты зачастую забывают ис- пользовать, связана с информацией, которая заносится в системную переменную IOResult после выполнения каждой файловой операции. Если такая операция про- шла успешно, то в переменную IOResult заносится 0. Ненулевое значение этой пе- ременной свидетельствует об ошибке. Если системный контроль за операциями ввода/вывода был включен (директива {$I+}), то ошибочная ситуация приводит к аварийному завершению программы. Но в некоторых случаях программа может предпринять определенные шаги по продолжению своей работы. Например, поль- зователь в ответ на запрос программы указал неверное имя файла, и при его откры- тии возникла ошибочная ситуация. Вместо аварийного завершения программа мо- жет еще раз запросить у пользователя нужные данные.

Если контроль за операциями ввода/вывода отключен (директива {$I-}), то при возникновении ошибочной ситуации работа программы не прекращается. Однако

все последующие файловые операции будут заблокированы до тех пор, пока про- грамма не прочитает содержимое IOResult. После такого чтения система вновь занесет нулевое значение в IOResult и дальнейшие обмены станут возможными.

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

По теме:

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