类如何保存?

zhifang 2003-10-22 08:19:09
假设有这么一个类:
TTmp=class
private
FBackBmp:TBitmap;
FCurBMP:TBitmap;
xPos:integer;
yPos:integer;
public
procedure SaveToFile(const Filename:string);
procedure LoadFromFile(const FileName:string);
end;

现在,FBackBmp已经载入一张图片a,FCurBMP载入一张图片b,xpos=10,yPos=50;
现在调用SaveToFile方法,把这个类保存起来,假设存为 abc.dat 这个文件。

下次运行的时候,调用LoadFromFile('abc.dat')方法,那么,FBackBmp的图片应该是a,而FCurBMP的图片是b,xpos=10,yPos=50.
请问大家怎么组织这个abc.dat的结构,如何这样保存呢?
thanks.
...全文
72 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyinwuhan 2003-10-22
  • 打赏
  • 举报
回复
//演示...
procedure TTmp.SaveToFile(const Filename:string);
var
fm : TFileStream;
mm1,mm2 : TMemoryStream;
dwSize1,dwSize2, dwOffset : DWORD;
begin
mm1 := TMemoryStream.Create;
FBackBmp.SaveToStream(mm1);
mm2 := TMemoryStream.Create;
FCurBMP.SaveToStream(mm2);
dwSize1 := mm1.size;
dwSize2 := mm2.size;
dwOffset :=0;

fm := TFileStream.Create('c:\abc.dat',fmCreate );
//先把两个bmp的大小写入文件流
fm.write( dwSize1,sizeof(DWORD));
fm.write( dwSize2,sizeof(DWORD));
//再写入两个bmp在文件中的偏移地址
fm.write( dwOffset,sizeof(dwoffset));
dwOffset := dwSize1;
fm.write( dwOffset,sizeof(dwoffset));
//再把两个bmp写入文件流
fm.copyfrom(mm1,0);
fm.copyfrom(mm2,0);

fm.free;
mm1.free...
end;

procedure TTmp.LoadFromFile(const FileName:string);

var
fm : TFileStream;
mm1,mm2 : TMemoryStream;
dwSize1,dwSize2, dwOffset1,dwOffset2 : DWORD;
begin
fm := TFileStream.Create('c:\abc.dat',fmOpenRead);
fm.read(dwSize1,sizeof(DWORD);
fm.read(dwSize2,sizeof(DWORD);
fm.read(dwOffset1,sizeof(DWORD));
fm.read(dwOffset2,sizeof(DWORD));

mm1 := TMemoryStream.Create;
mm1.copyfrom(fm,dwSize1);
FBackBmp.LoadFromStream(mm1);

mm2 := TMemoryStream.Create;
mm2.copyfrom(fm,dwSize2);
FCurBMP.LoadFromStream(mm2);
...

满意吗?给分吧:-)
hiflower 2003-10-22
  • 打赏
  • 举报
回复
用 WriteComponentResFile ReadComponentResFile 可能比较好做
nyf1220 2003-10-22
  • 打赏
  • 举报
回复
直接存放你要的数据,然后读出来的时候,把字符提出来附给类里的变量
很土 2003-10-22
  • 打赏
  • 举报
回复
FBackBmp: TBitmap = {用十六进制编码表示图片a的数据}
FCurBmp: TBitmp = {用十六进制编码表示图片b的数据}
xPos = 10
yPos = 50

十六进制编码: 一个字节使用 2 个 0..F 字母表示.
这样数据肯定不会丢失, 也易于读取.

5,402

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧