uses
sysutils; // only for deletefile
type aoi = array [1..12] of integer;
type aod = array[1..8] of double;
type aoa=array[1..3] of array[1..10] of string;
type s26=string[26];
function filelength(filename:ansistring):int32;
Var F : File Of byte;
var L:longword;
begin
Assign (F,filename);
Reset (F);
L:=FileSize(F);
Close (F);
exit(L);
end;
generic procedure loadfile<T>(var content:T;filename:ansistring);
Var Fin : File;
Var x:longint;
begin
x:=filelength(filename);
Assign (Fin,filename);
Reset (Fin,x);
BlockRead (Fin,content,1);
close(fin);
end;
generic procedure savefile<T>(content:T ;filename:ansistring);
var
fout:file;
begin
Assign(fout,filename);
Rewrite(fout,sizeof(content));
blockwrite(fout,content,1);
close(fout);
end;
var
i,j,k:int32;
a:aoi=(-6,45,67,-34,2,0,30,-8,67,3,5,7);
return :aoi;
g:s26='abcdefghijklmnopqrstuvwxyz';
h:s26='';
d:aod=(-0.7,45.5,90.3,-56.98,-0.006,45.1,100.6,-1.1);
dret:aod;
e:aoa=( ('13/23/55' , '13/23/55' , '13/23/55' , '13/23/55' , '13/23/55' , '13/23/55' , '13/23/55' , '13/23/55' , '13/23/55' , '13/23/55' ),
( '22/44/70' , '22/44/70' , '22/44/70' , '22/44/70' , '22/44/70' , '22/44/70' , '22/44/70' , '22/44/70' , '2/44/70' , '22/44/70' ),
( '33/74/90' , '33/74/90' , '33/74/90' , '33/74/90' , '33/74/90' , '33/74/90' , '33/74/90' , '33/74/90' , '33/74/90' , '33/74/90' ));
eret:aoa;
begin
writeln('Array [1..12]of integer');
specialize savefile<aoi>(a,'test.txt');
i:=filelength('test.txt');
specialize loadfile<aoi>(return,'test.txt');
writeln('file length ',i);
for j:=low(return) to high(return) do writeln(return[j]);
writeln;
writeln('string[26]');
specialize savefile<s26>(g,'teststring.txt');
i:=filelength('teststring.txt');
specialize loadfile<s26>(h,'teststring.txt');
writeln('file length ',i);
writeln(h);
writeln;
writeln('Array [1..8] of double');
specialize savefile<aod>(d,'testdouble.txt');
i:=filelength('testdouble.txt');
specialize loadfile<aod>(dret,'testdouble.txt');
writeln('file length ',i);
for j:=low(dret) to high(dret) do writeln(dret[j] :5:5);
writeln;
writeln('array[1..3] of array[1..10] of string');
specialize savefile<aoa>(e,'testaoa.txt');
i:=filelength('testaoa.txt');
specialize loadfile<aoa>(eret,'testaoa.txt');
writeln('file length ',i);
for j:=1 to 3 do
begin
for k:=1 to 10 do
begin
write(eret[j,k],' ');
end;
writeln;
end;
writeln('Press return to delete these files and exit .. .. ');
readln;
DeleteFile('test.txt');
DeleteFile('teststring.txt');
DeleteFile('testdouble.txt');
DeleteFile('testaoa.txt');
end.