Главная » Free Pascal » Файлы в стиле Turbo Pascal

0

Для канонической версии языка Паскаль характерно использование  файлов трех типов — текстовых, типизированных и не типизированных. Два последних типа большинство систем программирования рассматривают как двоичные.

Для описания файла, используемого в программе, необходимо:

± объявить переменную файлового типа;

± связать эту переменную с именованной областью данных на внешнем носителе;

± подготовить файл к работе (по терминологии программистов — открыть файл).

Форма объявления переменной файлового типа зависит от типа используемого файла:

name_ft : TEXT;                  {для текстовых файлов}

name_ft : FILE;                  {для не типизированных файлов}

name_ft : FILE of tip;            {для типизированных файлов}

Далее приводится несколько примеров объявления файловых типов и перемен- ных файлового типа:

type

book = record                  {запись типа книга} title : string[20];           {поле заголовка}

author: string[40];           {поле автора} publishinghouse: string[15];  {поле издательства} year : integer;              {год издания}

price : double;              {цена} end;

text60 = file of string [60]; var

f1 : file of char; {для типизированного файла} f2 : text;         {для текстового файла}

f3 : file;         {для не типизированного файла} f4 : text60;       {для типизированного файла}

f5 : file of book; {для типизированного файла}

Файл, с которым предполагается связать переменную файлового типа f1, со- стоит из записей, каждая из которых имеет длину 1 байт и содержит символ в ко-

дировке ASCII. Переменная f4 предназначена для связи с файлом, каждая запись которого содержит 60 символов в кодировке ASCII. Типизированный файл, с кото- рым предстоит связать переменную f5, должен содержать записи длиной по 87 байт, представляющих структуру данных о книге. Текстовый файл, для которого предна- значена файловая переменная f2, состоит из строк переменной длины, завершае- мых стандартным признаком <EOL> (аббревиатура от End-Of-Line, т. е. пара байт с кодами 0D и 0A). Нетипизированный файл, связываемый с переменной f3, по умолчанию состоит из блоков по 128 байт, содержимое которых ничем не регла- ментируется (среди них могут находиться как отображаемые символы, так и управляющие коды, которые рассматриваются как обычные байты с данными).

Привязка переменной vf файлового типа к именованной области внешнего запоминающего устройства (т. е. к физическому имени файла) или к логическому устройству операционной системы осуществляется с помощью системной процеду- ры Assign:

Assign(vf, ‘name’);

Здесь name — имя дискового файла или логического устройства (PRN, COM1, LPT1, …).

В состав системных логических устройств входит "пустое" устройство с име- нем NUL. Во время отладки программы в это устройство можно "писать", не забо- тясь ни о каких ограничениях по длине. При выборке данных это устройство сразу формирует логический признак <EOF> (аббревиатура от End-Of-File), который яв- ляется сигналом об исчерпании данных.

Следует упомянуть еще о двух системных устройствах с именами INPUT и OUTPUT, символизирующих стандартные средства ввода и вывода. Эти устройства не надо приводить в состояние готовности (это делает система), но зато входной и выходной потоки можно переназначать, осуществляя ввод не с клавиатуры, а из указанного текстового файла, или заменяя вывод на дисплей записью в заданный дисковый файл. Если вы хотите запустить программу prog.exe с переназначениями такого рода, то в командной строке надо набрать:

>prog <1.txt >2.txt

Операторы read и readln вместо клавиатуры будут считывать данные из зара- нее подготовленного текстового файла с именем 1.txt, а операторы write и writeln будут выводить результаты в текстовый файл с именем 2.txt. Такое переназначение бывает особенно удобно в процессе отладки программ с большими объемами ис- ходных данных и результатов обработки.

Для окончательного приведения файла в состояние готовности к обмену файл надо "открыть":

± процедура Reset (vf) открывает для чтения файл, связанный с переменной vf;

± процедура Rewrite (vf) открывает для записи файл, связанный с переменной vf;

± процедуры Reset(vf,len) и Rewrite(vf,len) открывают для обмена нетипи- зированный файл, связанный с переменной vf, и заменяют стандартную длину записи (128 байт) на длину len;

± процедура Append(vf) открывает для пополнения текстовый файл, связанный с переменной vf.

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

Во всех последующих процедурах обмена данными физическое имя файла за- меняет связанная с ним переменная файлового типа. После завершения работы с файлом правила хорошего тона рекомендуют его "закрывать". Для этой цели пред- назначена процедура close:

close(vf);

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

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

По теме:

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