共有评论9条
当前显示最后6条评论
|
mmzmagic |
2005/6/2 16:39:30 |
呵呵 我是因为将对象生命周期从运行期扩长到了磁盘文件甚至其它电脑上,所以才这么称呼的。尽管保存和还原的的并非运行期那个对象。 也许我不应该用“对象持久化”这个词汇,因为它已经成为一个标志性概念了。在此表示抱歉。 |
mmzmagic |
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; |
o_o |
2005/6/2 17:19:19 |
刚看完李维<深入vcl架构剖析>讲的对象持久化这一章.下来先看看.向你学习. |
wang_phoenix |
2005/6/2 22:09:29 |
持久化?????这是吗?InstantObject还差不多! |
nihaoqiang |
2005/6/5 20:48:38 |
你这个不是持久化,你这个只是把对象的数据保存到流中罢了,Delphi中的持久化不单保存的有数据(主要是公开的属性值和通过DefineProperties方法定制的数据),还保存有类的信息,是所有继承于TPersistent的对象可在流中保存和恢复自己的一种方法,你的方法并不能检测到流中保存的是什么数据,可以说不是很安全的。也不能称之为持久化 |
sbamwdx |
2008/7/31 17:50:04 |
这确实不是持久化。不过偶已经比你们落后三年了。惭愧啊!今天才开始读李维<深入vcl架构剖析>。 |
我要发表评论 |
查看全部评论 |