Чтение доступного элемента файла задается процедурой READ. Её вызов имеет вид:
Read(f, v)
где v – имя переменной того же типа, что и у элементов файла. В результате значение доступного элемента присваивается этой переменной, а указатель доступного элемента перемещается на следующий элемент.
Например, при чтении read(f, х)файловой переменной f со значением:
(<11, 12, 13>, 0, R)
переменная х приобретает значение 11, а значение f можно представить как:
(<11, 12, 13>, 1, R)
т.е. доступным становится элемент 12.
Вообще, если файл содержит n элементов, пронумерованных от 0 до n-1, и номер доступного компонента i меньше n, то вызов read (f, х) задает присваивание переменной х значения i-го элемента и переход от значения файловой переменной (F, i, R) к значению (F, i+1, R). Если же i=n, то говорят, что файл f прочитан, или исчерпан (в частности, если он пустой, т.е. F =<>). При таком значении i вызов read приводит к аварийному завершению программы.
В вызове процедуры read можно указывать произвольное количество аргументов, которые являются именами однотипных переменных:
read(f, V1, V2,…,VN)
Такой вызов выполняется на самом деле как последовательность вызовов:
read(f, V1); read(f, V2) ; ... read(f, Vn)
Разумеется, надо иметь гарантию, что в файле остается достаточно непрочитанных элементов.
Подчеркнем, что к типизированным файлам неприменима процедура чтения readln – ее можно применять лишь для чтения текстов.
Определить, достигнут ли конец файла, можно при помощи функции EOF. Из вызова eof (f) возвращается булево значение false, если доступен какой-нибудь элемент файла, т.е. i<n в значении файловой переменной (<f0,..., fn-1>, i, R). Значение true возвращается при i=n, что возможно после чтения всех элементов файла без установки его в начальное состояние.
Вызов функции eofпозволяет определить, есть ли еще в файле непрочитанные элементы, и предотвратить чтение из исчерпанного файла.
Практически всегда программу следует записывать так, чтобы в процессе ее выполнения проверка неисчерпанности файла предшествовала вызову процедуры read.
Пример:
Вывести на экран компьютера данные о студентах из файла, созданного по программе из предыдущего примера.
Будем рассматривать файл как последовательность записей типа Student. Элементы файла по одному читаются во вспомогательную переменную St, и значения ее полей (фамилия, имя и средний балл), имеющие базовый или строчный тип, выводятся на экран с его предварительной очисткой. Очистка экрана задается вызовом процедуры CLRSCR (clearscreen — очистить экран) из модуля Crt. После каждого вывода для получения новых данных следует нажать клавишу [Enter].
В следующей программе используется переменная IOResult, определенная в модуле Dos. Она приобретает ненулевое значение, если при выполнении процедуры Reset возникла какая-то ошибка, например связанная с тем, что пользователь задал имя несуществующего файла. Перед ее вызовом выключается режим проверки правильности ввода-вывода, поскольку в этом режиме при ошибочном: выполнении Reset программа аварийно завершается. После вызова Reset режим проверки включается снова.
program OutPutGroup;
uses Crt, Dos; {Подключение модулей Crtи Dos}
type Student = record
Sname, Name : string[20];
Ball : real;
end;
var Fi : file of Student;
FileName : string;
procedure OpenFile;
var Rez : Integer; Ch : char;
begin
Rez:=l;
while Rez<> 0 do begin
{Rez<>0 – правильное внешнее имя файла не задано}
writeln(‘Задайте имя файла’);
гeadln(FileName);
assign (Fi, FileName);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.