捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  粤ICP备10103342号-1 DELPHI盒子 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 盒子检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
对象持久化及操作回放
关键字:TObjectList Draw 绘图 对象 持久化 回放
来 自:原创
平 台:Win9x,Win2k/XP/NT,Win2003 下载所需:0 火柴
深浅度:中级 完成时间:2005/6/1
发布者:mmzmagic 发布时间:2005/6/1
编辑器:DELPHI7 语  种:简体中文
分 类:对象 下载浏览:1188/13308
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
图片如果打不开,说明流量不够了,请稍候下载……
一个小列子示范对象记录、回放还有磁盘文件化以及文件对象化等技巧。
功能:
    可以记录你在窗体上画的一切并且回放。
操作方法:
    鼠标左键点击定位起始点,移动后再次点击可以绘制一跟线段并记录到内存,右键点击可以取消所画线段。
初始化按钮:
    是清空画布以及内存记录列表。
保存到文件:
    是将现在的内存记录列表保存为文件。
从文件读取:
    是读取保存在文件内的对象。
程序运行后自动读取我画的一个示范。
只是个小列子,现在只能是简单对象,不支持对象内带有对象以及不确定长度的变量如字符串等等。
进一步研究的任务就交给对此感兴趣的朋友了,有什么进展发现别忘跟偶说一声。
QQ:22900104
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
没有相关文章
相关评论
共有评论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架构剖析>。
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 技术支持:深圳市麟瑞科技有限公司 1999-2024 V4.01 粤ICP备10103342号-1 更新RSS列表