慎用TClientDataset.Data
来源:互联网 发布:淘宝限时打折收费 编辑:程序博客网 时间:2024/05/21 22:48
慎用TClientDataset.Data
有时候考虑到效率的原因,直接使用data来复制数据。但是有一点要注意:
追踪delphi的源码,发现
Tclientdataset在Open的时候,会先判断一个内部的字段FSavedPacket: TDataPacket. If FSavedPacket <> nil then DoGetRecords(…)
而当我们调用cdsxxx.data := anyData,它会把值赋给FSavedPacket。所以此时FSavedPacket已经<>nil了,而且从源码上看,TClientDataset在close的时候并没有把FSavedPacket清掉。所以下次Open的时候,其实这个Open是不会去取数据的,也就是没有效果的。
解决这个问题的办法是自己派生一个新的ClientDataset
TMyClientDataSet = class(TClientDataset)
protected
procedure CloseCursor; override;
...
TMyClientDataSet.CloseCursor;
begin
inherited CloseCursor;
Data := null; //此处清空FSavedPacket
end;
- 慎用TClientDataset.Data
- TClientDataSet[2]: Data、XMLData
- TClientDataSet
- TClientDataSet
- TClientDataSet
- TClientDataSet
- TClientDataSet[21]: 使用 ADT(Abstract Data Type) 字段
- 慎用!
- 慎用""
- TClientDataSet用法
- 深入TClientDataSet
- 使用TclientDataset
- TClientDataSet 用法
- 关于TClientDataSet
- Delphi TClientDataSet
- TClientDataSet使用方法
- TClientDataSet使用要点
- TClientDataSet的地位
- css样式在gwt-ext页面布局中的作用
- java多线程编程 - 实战篇(一)
- VC中如何实现最小化到托盘以及恢复
- 使用jxl组件读取excel
- UML中关联、依赖、聚集等关系的异同
- 慎用TClientDataset.Data
- C内存管理
- colgroup和col的区别
- 使用Wininet API上传文件到Web Server
- Makefile是如何编写的
- Linux常用的几个小命令
- ser511 rev C2 阵列卡2k_2003_xp驱动
- C#获取本机IP的最简单方法
- 读取托盘栏图标对应进程ID