Типизированные файлы

Типизированный (компонентный) файл – файл с объявленным типом его компонентов, т.е. файл с данными одной и той же структуры.

<имя типа>=File of <тип>;

<тип> - структурированный или одинарный тип;

type

dc=array[1..100,1..20] of real;

rc=record... end;

var

df: file of dc;

dr: file of rec;

Для типизированных файлов обе процедуры RESET и REWRITE устанавливают режим «чтение-запись» (т.е. файл открывается и для чтения и для записи).

Процедуры и функции для работы с типизированными файлами

Ввод/вывод данных

Ввод данных осуществляется оператором

Read (<файловая переменная>, <список ввода>);

<список ввода> - список, содержащий одну или более переменных того же типа, что и компонент файла.

Если файл исчерпан, обращение к READ вызовет ошибку ввода.

Вывод данных осуществляется оператором

Write (<файловая переменная>, <список ввода>);

<список ввода> - список, содержащий одну или более переменных того же типа, что и компонент файла.

Поиск в файле

Уже знакомая нам функция eof(<ф.п.>) сообщает о достигнутом конце файла. Все остальные функции "поиска конца", свойственные текстовым файлам, нельзя применять к файлам типизированным.

Зато существуют специальные подпрограммы, которые позволяют работать с типизированными файлами как со структурами прямого доступа:

1. Функция Filepos(<файловая переменная>):longint сообщит текущее положение указателя в файле f. Если он указывает на самый конец файла, содержащего N элементов, то эта функция выдаст результат N. Это легко объяснимо: элементы файла нумеруются начиная с нуля, поэтому последний элемент имеет номер N-1. А номер N принадлежит, таким образом, "несуществующему" элементу - признаку конца файла.

2. Функция Filesize(<файловая переменная>):longint вычислит длину файла f.

3. Процедура Seek(<файловая переменная>,<номер записи>) передвинет указатель в файле f на начало записи с номером N. Если окажется, что n больше фактической длины файла, то указатель будет передвинут за реальный конец файла.

4. Процедура Truncate(<файловая переменная>) обрежет "хвост" файла f: все элементы начиная с текущего и до конца файла будут из него удалены. На самом же деле произойдет лишь переписывание признака "конец файла" в то место, куда указывал указатель, а физически "отрезанные" значения останутся на прежних местах - просто они станут "бесхозными".


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: