
Типизированные файлы
Типизированные файлы допускают как последовательный, так и прямой доступ. Элементы типизированных файлов должны быть одного типа и следовательно одного размера. Это могут быть числа, массивы, записи и т.д. Нумеруются элементы файла целыми числами, начиная с нуля. Благодаря этому возможен произвольный доступ к любому элементу типизированного файла, т.е. по номеру однозначно определяется местоположение элемента файла.
Описание:
var <имя файловой переменной> : file of <базовый тип>;
Например:
var f1: file of char; (string; integer;)
В типизированных файлах информация хранится в машинном представлении. Никаких преобразований при вводе-выводе не происходит, поэтому возрастает скорость ввода-вывода, но такую информацию нельзя просмотреть в текстовом редакторе.
Для работы с типизированным файлом надо:
установить связь между файловой переменной и файлом на диске компьютера;
процедура
Assign (<имя файловой переменной>, ‘<путь к файлу>’);
открыть файл для чтения или записи
Reset (<имя файловой переменной >) – открывает уже существующие файлы;
Rewrite (<имя файловой переменной >) – открывает новые файлы. Если файл уже открыт, то он сначала закрывается и затем снова открывается;
Произвести чтение или запись
Чтение:
процедура Read (<имя файловой переменной>, v1,v2,..,vn);
Запись:
процедура Write (<имя файловой переменной >, v1,v2,..,vn);
где v1,v2…,vn – переменные базового типа (того же, что и элементы файла);
Для произвольного доступа можно применить:
a. процедура Seek (<имя файловой переменной >, <номер элемента>: longint);
- устанавливает указатель файла на элемент с указанным элементом. Первая компонента файла имеет номер 0, последняя (n-1), где n – количество компонент в файле.
b. функция FilePos (<имя файловой переменной >):longint;
- определяет текущее положение указателя файла.
с. функция FileSize (<имя файловой переменной >):longint;
-определяет общее количество элементов в файле.
Т.к. типизированные файлы не разбиты на строки, процедуры Readln и Writeln для них не имеют смысла.
4. Закрыть файл.
процедура Close (<имя файловой переменной >);
Пример: составить программу, создает типизированный файл, состоящий из действительных чисел, считывает из него данные и определяет сумму чисел.
Решение: аналогично программе с текстовым файлом, только ftext надо заменить на freal и исправить процедуру WriteToFile.
var
freal:file of real;
name:string[8];
Procedure OpenFile;
<аналогично>
……………….
Procedure WriteToFile
……………….
while not Eof do
begin
readln(x); {ввод очередного числи с клавиатуры}
writeln(freal,x); {запись очередного числа в файл}
end;
……………….
Procedure ReadFile;
<аналогично>
……………….
begin {Program}
<аналогично >
……………….