Практика программирования (Бейсик, Си, Паскаль)



         

Основные типы файлов в Паскале - часть 3


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.




Содержание  Назад  Вперед