Считывание из типизированного файла
Открытие и закрытие типизированного файла
Назначение типизированного файла
С этого момента и до конца раздела под словом "файл" мы будем подразумевать " бинарный типизированный файл " (разумеется, если специально не оговорено иное).
Команда assign(f,'<имя_файла>'); служит для установления связи между файловой переменной f и именем того файла, за работу с которым эта переменная будет отвечать.
Строка ' <имя_файла> ' может содержать полный путь к файлу. Если путь не указан, файл считается расположенным в той же директории, что и исполняемый модуль программы.
В зависимости от того, какие действия ваша программа собирается производить с открываемым файлом, возможно двоякое его открытие:
- reset(f); - открытие файла для считывания из него информации и одновременно для записи в него (если такого файла не существует, попытка открытия вызовет ошибку). Эта же команда служит для возвращения указателя на начало файла;
- rewrite(f); - открытие файла для записи в него информации; если такого файла не существует, он будет создан; если файл с таким именем уже есть, вся содержавшаяся в нем ранее информация исчезнет.
Закрываются типизированные файлы процедурой close(f), общей для всех типов файлов.
Чтение из файла, открытого для считывания, производится с помощью команды read(). В скобках сначала указывается имя файловой переменной, а затем - список ввода:
read(f,a,b,c); - читать из файла f три однотипные переменные a, b и c.
Вводить из файла можно только переменные соответствующего объявлению типа, но этот тип данных может быть и структурированным. Cкажем, если вернуться к примеру, приведенному в начале п. " Типизированные файлы ", то станет очевидным, что использование типизированного файла вместо текстового позволит значительно сократить текст программы:
type toy = record name: string[20];
price: real;
age: set of 0..18; {задано границами}
end;
var f: file of toy;
a: array[1..100] of toy;
begin
assign(f,input);
reset(f);
for i:=1 to 100 do
if not eof(f) then read(f,a[i]);
close(f);
...
end.