seek(f1,номер_записи);
Программа 7_03.pas формирует поля записи ь (строка из 6-ти символов, короткое целое число, вещественное число) и в цикле последовательно переписывает их на диск. Затем этот же файл открывается для ввода и его содержимое считывается в обратном порядке.
Программа 7_03.pas
program rec_file;
uses Crt;
type
qq=record
a:string[6];
n:integer;
r:real; end; var
f1:file of qq; j,kl: integer;
rec:qq; d:real;
begin clrscr;
assign (fl, 'pas__rec') ;
rewrite(fl);
rec.a:='Строка';
for j:=1 to 10 do begin
rec.n:=j;
rec.r:=sqrt(j);
write(fl,rec);
writeln(rec.a,rec.n:4,rec.r:10:4);
end;
close(fl);
writeln; reset(fl);
for j:=9 downto 0 do begin
seek(fl,j);
readffl,rec);
writeln(rec.a,rec.n:4,rec.r:10:4);
end;
readln;
end.
Нетипизированные(двоичные) файлы в Паскале
Для работы с нетипизированным (двоичным) файлом необходимо объявить файловую переменную (f1:fiдe;), связать ее с именем дискового файла и открыть его для записи (rewrite (f1,n);) или для чтения (reset(f1,n);). Параметр п здесь является необязательным, по умолчанию его значение равно 128. Задает он размер порции данных, участвующих в обмене, в байтах. Для обмена с двоичными файлами используются специальные процедуры blockread И blockwrite:
blockwrite(f1,buf,n_rec,vl);
blockread(f1,buf,n_rec,vl);
Здесь buf — массив (обычно типа byte), в котором находятся данные, либо подготовленные для записи на диск, либо считанные с диска. Параметр п_гес задает количество порций, участвующих в обмене. В переменную vl заносится фактическое количество записанных или считанных порций. Несовпадение между n_гес и значением vl при чтении обычно связано с некратностью длины файла и объемом считываемых данных. При выводе такое событие обычно возникает при исчерпании дисковой памяти. Чтобы обеспечить доступ к любому фрагменту данных в двоичном файле, необходимо воспользоваться процедурой перемещения указателя файла в нужную позицию:
seek(f1,n_rec);
В двоичном файле "записью" считается порция, размер которой был установлен в момент открытия файла, и нумеруются эти записи от 0.