Способы объявления файловых типов.
Общий вид объявления файлового типа
TYPE <тип файл> = FILE [ OF <тип компонент>];
1) для текстовых файлов:
TYPE <тип файл> = TEXT;
2) для файлов записей:
TYPE <тип файл> = FILE OF <тип запись>;
3) для нетипизированных файлов:
TYPE <тип файл> = FILE;
Для того, чтобы использовать в программе файловые типы данных, необходимо объявить переменные файлового типа одним из следующих способов:
Способы объявления переменной файлового типа
1 способ:
TYPE <тип файл> = FILE [ OF <тип компонент>];
VAR <программный файл>: <тип файл>;
2 способ:
VAR <програм. файл>: FILE [ OF <тип компонент>];
Переменные файлового типа называют программными файлами. Файлы имеют начальную метку и конечную метку.
С каждым программным файлом связан указатель файла или текущий указатель.
Указатель файла это специальная переменная, которая хранит адрес доступной в настоящий момент компоненты файла. После выполнения операции открытия файла указатель всегда указывает на начало первой компоненты файла. Значение указателя файла изменяется в результате выполнения операций чтения файла или записи информации в файл. Если выполнена одна операция чтения или записи, то указатель файла перемещается к началу следующей компоненты.
Рис. Файл и текущий указатель файла
Операции для работы с файлами
1. Каждый программный файл должен быть связан с соответствующим дисковым файлом. Такая связь организуется специальной операцией связывания:
ASSIGN(<програм. файл>, ‘полное имя файла на диске’);
2. Операции открытия программного файла необходима для начала работы с файлом и определения начального значения указателя файла. создаваемый и существующий файл открываются разными операциями:
- для создаваемого файла:
REWRITE (<программный файл>);
- для существующего файла:
RESET (<программный файл>);
3. Операции обмена информацией между операционной памятью и программными файлами:
- ввод информации из файла в ОП:
READ(<программный файл>, <переменная>);
- вывод информации:
WRITE(<программный файл>,<переменная>);
Операции обмена информацией с файлом организуют так называемый последовательный доступ к компонентам файла. Этот принцип аналогичен поиску информации на магнитной ленте магнитофона.
4. Прямой доступ к компоненте файла, позволяет установить указатель файла непосредственно на начало нужной компоненты. В Паскале прямой доступ возможен только по номеру компоненты. В этом случае нужно помнить о том что номер компоненты не всегда известен программисту и пользователю.
SEEK(<программный файл>, № компоненты);
5. Закрытие файла:
CLOSE(<программный файл>);
Если файл не закрыт и по какой-то причине программа завершилась аварийно, то все изменения внесенные в файл будут утеряны. Поэтому рекомендуется закрывать файл по завершении работы с ним.
6. Некоторые дополнительные операции над файлами могут очень полезны:
- определяет закончился ли файл:
EOF(<программный файл>)
- определяет размер файла в компонентах:
FILESIZE(<программный файл>)
- определяет номер текущей компоненты:
FILE POS(< программный файл>)
Последовательность работы с файлами записей:
При использовании файлов записей – файлов компонентами, которых являются записи (данные комбинированного типа) нужно придерживаться следующей последовательности написания программы:
- Объявить тип запись.
- Объявить программный файл, компоненты которого имеют тип запись.
- Объявить переменную, того же типа что и компонента файла, для обмена информацией между ОП и программными файлами.
- Открыть файл существующий или создаваемый.
- Для обмена информации использовать операторы ввода или вывода.
- Выполнить закрытие файла.