如何将数组保存到文件中? ( 积分: 7 )

  • 主题发起人 主题发起人 winni
  • 开始时间 开始时间
W

winni

Unregistered / Unconfirmed
GUEST, unregistred user!
type
somerect=array[0..100] of trect;
var p:array[0..10] of somerect;

如何保存p 数组???????????
 
type
somerect=array[0..100] of trect;
var p:array[0..10] of somerect;

如何保存p 数组???????????
 
WriteFile 然后呢,怎么把整块内存的p都写进去
 
如果保存为文本文件
var
SList: TStringList;
I: Integer;
begin
SList := TStringList.Create;
for I:= Low(p) to High(p) do SList.Add(p);
SList.SaveToFile(你的文件名);
 
难道没办法保持p的整块内存吗?
 
writefile(……,p,……,length(p),……) 保存不了全部
 
delphi没办法做到?
 
writefile(……,p,……,sizeof(p),……)
 
type
psomerect = ^somerect;
somerect=array[0..100] of trect;
pp: Pointer;
i: integer;
var
p:array[0..10] of somerect;
ppp: psomerect;
begin
...
fn := TFileStream.Create('xxx.xxx', fmCreate);
try
Getmem(ppp, sizeof(somerect)*11);
try
pp := ppp;
for i := 0 to 10 do begin
ppp^ := p;
inc(ppp);
end;
ppp := pp;
fn.Write(ppp^, sizeof(somerect)*11);
finally
Freemem(ppp);
end;
finally
fn.Free;
end;
end;
 
Delphi在控件编写思路方面提供了一种流处理的机制
按照一定顺序调用每个部件的写入方法,读出是按相同顺序调用读入方法
每个部件的相应方法只要管将自己的信息"无歧义"地读写就行了
一个这种运用的实例是.DFM的生成

建议你读一下<Delphi5开发人员指南>的自定义组件一章
 
我开头胡写一通,开始应
type
psomerect = ^somerect;
somerect=array[0..100] of trect;
var
p:array[0..10] of somerect;
ppp: psomerect;
pp: Pointer;
i: integer;
fn: TFileStream;
begin
...
end;
 
调用流写下去就行了嘛!就算你写图片文件进去也没有问题,关键是读出来的时候要程序解释和分解再合成原始的东西。
 
用流来写
procedure TForm1.Save1Click(Sender: TObject);
var
SaveStream:TFileStream;
i,j:Integer;
begin
SaveStream:=TFileStream.Create('Test.dat',fmCreate);
Try
for i:=Low(p) to High(p) do
for j:=Low(p) to High(p) do
SaveStream.Write(p[j],SizeOf(TRect));
Finally
SaveStream.Free;
end;
end;

用Pascal传统方法来写:
procedure TForm1.Save2Click(Sender: TObject);
var
F:File of TRect;
i,j:Integer;
begin
AssignFile(F,'Test.dat');
ReWrite(F);
try
for i:=Low(p) to High(p) do
for j:=Low(p) to High(p) do
Write(F,p[j]);
finally
CloseFile(f);
end;
end;
 
后退
顶部