捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  粤ICP备10103342号-1 DELPHI盒子 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 盒子检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
 
广告
评论:对象持久化及操作回放
sbamwdx 35156 2008/7/31 17:50:04
这确实不是持久化。不过偶已经比你们落后三年了。惭愧啊!今天才开始读李维<深入vcl架构剖析>。
nihaoqiang 15412 2005/6/5 20:48:38
你这个不是持久化,你这个只是把对象的数据保存到流中罢了,Delphi中的持久化不单保存的有数据(主要是公开的属性值和通过DefineProperties方法定制的数据),还保存有类的信息,是所有继承于TPersistent的对象可在流中保存和恢复自己的一种方法,你的方法并不能检测到流中保存的是什么数据,可以说不是很安全的。也不能称之为持久化
wang_phoenix 15368 2005/6/2 22:09:29
持久化?????这是吗?InstantObject还差不多!
o_o 15361 2005/6/2 17:19:19
刚看完李维<深入vcl架构剖析>讲的对象持久化这一章.下来先看看.向你学习.
mmzmagic 15358 2005/6/2 16:43:39
TO iamdream :
  呵呵 如何存储只是一个方式,换一种存储方式是解决不了这个问题的。
改写了一下保存和读取的2个过程, 现在是通用的 。
==========
Procedure MyobjSaveToFile(IobjList:TObjectList;IfileName:String);
Var
  I: Integer;
  LOpt:TFileStream;
  PPos:PInteger;
Begin
  LOpt:=TFileStream.Create(IfileName,fmCreate);
  For I := 0 To IobjList.Count - 1 Do Begin    // Iterate
    PPos:=Pointer(IobjList.Items[i]);
    Inc(PPos);
    LOpt.WriteBuffer(ppos^,IobjList.Items[i].InstanceSize-4);
  End;    // for
  LOpt.Free;
End;

Procedure MyobjLoadFromFile(Iobjlist:TObjectList;IfileName:String;Ltep:TClass);
Var
  LOpt:TFileStream;
  Ppos:PInteger;
  lObj:TObject;
Begin
  LOpt:=TFileStream.Create(IfileName,fmOpenRead);
  Iobjlist.Clear;
  while LOpt.Position<>LOpt.Size do Begin
    lObj:=ltep.Create;
    pPos:=Pointer(lObj);
    Inc(Ppos);
    LOpt.ReadBuffer(Ppos^,lObj.InstanceSize-4);
    Iobjlist.Add(lObj);
  End;
  LOpt.Free;
End;
mmzmagic 15357 2005/6/2 16:39:30
呵呵  我是因为将对象生命周期从运行期扩长到了磁盘文件甚至其它电脑上,所以才这么称呼的。尽管保存和还原的的并非运行期那个对象。
也许我不应该用“对象持久化”这个词汇,因为它已经成为一个标志性概念了。在此表示抱歉。
jhwh 15356 2005/6/2 16:14:58
楼主这个不是对象持久化,是保存对象信息。两者差别大了。
iamdream 15355 2005/6/2 15:08:26
要支持变长字符串等功能可用数据库存储代替普通文件存储来实现。
tim001 15348 2005/6/2 13:38:40
学习
第一页 上一页 下一页 最后页 有 9 条纪录 共1页 1 - 9
 用户名:
 密 码:
自动登陆(30天有效)
 
  DELPHI盒子版权所有 技术支持:深圳市麟瑞科技有限公司 1999-2024 V4.01 粤ICP备10103342号-1 更新RSS列表