Обратите внимание на то, каким
Программа 7_04.pas выполняет в цикле вывод 10-ти порций данных, заготавливаемых в массиве buf (размер каждой порции — 15 байт). Обратите внимание на то, каким образом в этом массиве выделяются участки памяти для хранения разнотипных данных. Нетипизированный указатель р допускает присваивание адреса любого типа, а его значение может быть присвоено любому типизированному указателю. Для текста "строка", содержащего шесть символов, в массиве buf отводится семь байт с учетом указателя длины, предшествующего строковому значению.
Программа 7_04.pas
program bin_file;
uses Crt;
var
buf:array [1..15] of byte;
f1:file;
р:pointer;
рs:^string;
pk:^integer;
pr:^rеа1;
j:integer;
begin clrscr;
p:=@buf[l];
ps:=p;
p:=@buf[8];
pk:=p;
p:=@buf[10J;
pr:=p;
assign(f1,'pas_bin') ;
rewrite(fl,15);
ps^:='Строка';
for j:=1 to 10 do begin
pk^:=j;
pr^:=sqrt(j) ;
blockwrite(f1,buf,1);
writeln (рs^,р^: 4,рг^ : 10: 4) ;
end;
close(f1);
writeln;
reset(f1,15);
for j:=9 downto 0 do begin
seek(f1,j);
blockread(f1,buf,1);
writeln(рs^,рk^:4,pr^:10:4);
end;
close(f1);
readln;
end.
Содержание Назад Вперед