Типизированный файл. Пример №20.

Типизированный файл – это тип, который подразумевает файл, содержащий последовательность значений указанного базового типа.

Например:

pascal
type
IntFile = file of integer;
var
f_in, f_out : IntFile;

Описанный в данном случае тип IntFile можно использовать для связи с файлами на диске, содержащими последовательность целочисленных данных.

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

Процедуры:

Read(<список ввода>) – считывает из файла, связанного с переменной f, значения для одной или нескольких переменных, указанных в <списке ввода> (вспомните стандартные процедуры read и readln);

Write(f,<список вывода>) – записывает в файл, связанный с переменной f, значения выражений, указанных в <списке вывода>; (аналогично стандартной процедуре write);

Seek(f,n) – ищет компоненту с номером n файла, связанного с переменной f, и устанавливает на нее текущий указатель;

Truncate(f) – удаляет часть файла, начиная с текущего указателя и до его конца.

Функции:

FileSize(f) – возвращает текущий размер файла (количество его компонент);

FilePos(f) – возвращает положение указателя – номер текущей компоненты.

Работу с типизированными файлами проиллюстрируем на примере создания файла, содержащего случайные числа в диапазоне от 0 до 1 и вывода его содержимого на экран (пример 20).

Пример 20

pascal
uses Crt;
type
RealFile=file of real;
var
f : RealFile;

PROCEDURE OutFile(f:RealFile);
var
x:real;
begin
while not eof(f) do {пока не достигнут конец файла}
begin
read(f,x);       {чтение из файла очередной компоненты}
writeln(x:4:2);  {вывод ее на экран}
end;
end;

PROCEDURE FillFile(f:RealFile);
var
i:byte;
begin
randomize;
for i:=1 to 20 do
write(f,random); {запись в файл очередного случайного числа}
end;
BEGIN
ClrScr;
Assign(f,'demo.dat');
Rewrite(f);
FillFile(f);
OutFile(f);
Close(f);
END.