type RecType=record
...
end;
arRec=array[1..100] of RecType;var
f:file of Rectype;
r:RecType;
i:integer;
ar:arRec; //结构数组保存到文件:
assignfile(f,'filename');
rewite(f);
for i:=1 to 100 do write(f,ar[i]);
closefile(f);从文件中读取:
assignfile(f,'filename');
reset(f);
for i:=1 to 100 do read(f,ar[i]);
closefile(f);
...
end;
arRec=array[1..100] of RecType;var
f:file of Rectype;
r:RecType;
i:integer;
ar:arRec; //结构数组保存到文件:
assignfile(f,'filename');
rewite(f);
for i:=1 to 100 do write(f,ar[i]);
closefile(f);从文件中读取:
assignfile(f,'filename');
reset(f);
for i:=1 to 100 do read(f,ar[i]);
closefile(f);
郑重建议:
不要用assignfile这样原始的函数,而应当用
文件流 TFileStream,方便,容易。
assignfile( )前面是不是要用openjfile,我在定义f:file of Rectype的时候,运行出错:[Error] main.pas(33): Type 'Tuserlist' needs finalization - not allowed in file type;我不知道什么原因?谢谢!
AssignFile有什么不妥吗?我一直用它啊
procedure TForm1.Button1Click(Sender: TObject);
type
PointType = record
x,y : integer;
end;
RecArr = array[1..10] of PointType;
var a,b:RecArr;
f:file of PointType;
i:integer;
begin
for i:=1 to 10 do
begin
a[i].x:=i; a[i].y:=i*i;
end;
AssignFile(f,'tmp.rec');
rewrite(f);
for i:=1 to 10 do write(f,a[i]);
Closefile(f); AssignFile(f,'tmp.rec');
reset(f);
for i:=1 to 10 do
begin
read(f,b[i]);
Memo1.Lines.Add(Format('%10d%10d',[b[i].x,b[i].y]));
end;
Closefile(f);
end;当然,你可以将type定义放在单元的接口部分(interface),或者说放在implementation的上面
我的程序如下:
type
Tuserlist=record
username :string;
passwd :string;
localaddress :string;
end;
userlistarr = array[1..100] of Tuserlist;
public
{ Public declarations }
userlist :userlistarr;
var
fuserlist :file of Tuserlist;
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
assignfile(fuserlist,'d:/editing/editing(1)/editing/userlist');
reset(fuserlist);
for i:=1 to 100 do
begin
read(fuserlist,userlist[i]);
end;
closefile(fuserlist);
end;
运行时老是报::[Error] main.pas(33): Type 'Tuserlist' needs finalization - not allowed in file type(在f:file of PointType;一句);不知为什么?请帮忙看看,谢谢!
type
Tuserlist=record
username :string[20];
passwd :string[20];
localaddress :string[80];
end;
即可顺利运行。
这里,必须指定字串的最大长度string[n], n介于[1..255]可根据需要指定n值。
不好意思,再麻烦你一下:如何判断上面所说的文件是否结束(.eof好像不行),因为我要想知道文件中到底放了多少个数组的项。谢谢!
for i:=1 to filesize(f) do read(f,rec[i]);
同时你可参考 filepos(f)函数