想学 TClientDataSet 是在 2009 年 5 月, 但当时学不动; 现在好了, 有源码了(DBClient.pas).

希望这次学习能对其内存协调方式有所了解, 顺便学点数据库的知识.



TClientDataSet 是一个内存数据集(说"数据表"对不住它), 其内存数据可存取到本地(*.cds 或 *.xml 格式).

用 TDBGrid 可方便查看其内存数据, 但需要用数据源组件(如: TDataSource)桥接一下:
TDBGrid.DataSource ← TDataSource.DataSet ← TClientDataSet

Program Files\Common Files\CodeGear Shared\Data 下有官方提供的测试数据, 下面程序可浏览这些数据:


//假定已在设计时挂接好: ClientDataSet1、DataSource1、DBGrid1, 并添加一个 ListBox1uses IOUtils, Types;var DataPath: string;procedure TForm1.FormCreate(Sender: TObject);
varsArr: TStringDynArray;s: string;
begin{ 获取测试数据所在的路径 }DataPath := GetEnvironmentVariable('COMMONPROGRAMFILES') + '\CodeGear Shared\Data\';{ 获取路径下所有 cds 文件 }sArr := TDirectory.GetFiles(DataPath, '*.cds');{ 添加到列表 }for s in sArr do ListBox1.Items.Add(ExtractRelativePath(DataPath, s));
end;procedure TForm1.ListBox1Click(Sender: TObject);
beginClientDataSet1.LoadFromFile(DataPath + ListBox1.Items[ListBox1.ItemIndex]);
end;

其中的:


procedure TForm1.ListBox1Click(Sender: TObject);
beginClientDataSet1.LoadFromFile(DataPath + ListBox1.Items[ListBox1.ItemIndex]);
end;//可换成:
procedure TForm1.ListBox1Click(Sender: TObject);
beginClientDataSet1.Active := False;ClientDataSet1.FileName := DataPath + ListBox1.Items[ListBox1.ItemIndex];ClientDataSet1.Active := True;
end;//或换成:
procedure TForm1.ListBox1Click(Sender: TObject);
beginClientDataSet1.Close;ClientDataSet1.FileName := DataPath + ListBox1.Items[ListBox1.ItemIndex];ClientDataSet1.Open;
end;

从源码中看 Open/Close 方法和 Active 属性的关系:


{ TClientDataSet 的继承关系: TDataSet - TCustomClientDataSet - TClientDataSet }
procedure TDataSet.Open;
beginActive := True;
end;procedure TDataSet.Close;
beginActive := False;
end;

从源码中查看 LoadFromFile 对 Open/Close 方法的调用:


procedure TCustomClientDataSet.LoadFromFile(const FileName: string = '');
varStream: TStream;
beginClose;
...LoadFromStream(Stream); { LoadFromFile 调用了 LoadFromStream}
...
end;procedure TCustomClientDataSet.LoadFromStream(Stream: TStream);
beginClose;ReadDataPacket(Stream, False);Open;
end;

转载于:https://www.cnblogs.com/del/archive/2010/01/20/1652118.html

TClientDataSet[1]: 浏览测试数据相关推荐

  1. 博客总目录(2007.11.12 - 2010.4.25)

    如果我的学习记录和历程能对你有所帮助, 我非常高兴; 但是 -- "万一" 不是高手.更不是大师, 只是利用工作之余学点东西, 并感觉学得挺吃力. 内容都是写时才会, 难免稚嫩, ...

  2. python完美测试数据之faker!

    Python中有一个神奇的库叫做faker,它可以自动帮助我们生成各种看似真实的"假"数据.让我们来看看. 安装 首先我们先来看看这个库怎么安装,其实装起来非常简单,使用 pip ...

  3. 软件性能测试参数化数据准备,性能测试之如何准备测试数据

    作者:刘林霞 关于如何准备性能测试数据,相信不少性能测试人员也踩过不少坑:比如数据量不足,导致性能表现非常好,忽略了一些潜在性能问题:数据分布不合理,导致测试结果与线上差异较大,又要推到重来.经过n多 ...

  4. Faker库:生成测试数据

    在做程序开发的时候,我们经常会用到一些测试数据.在 Python 中有个神库,叫做 Faker,它可以自动帮我们来生成各种各样的看起来很真的"假"数据,让我们来看看吧! 安装 首先 ...

  5. 2. 如何给在 SAP Business Application Studio 里开发的 OData 服务准备测试数据

    在开始本步骤的学习之前,请大家务必完成前一步骤1. SAP Business Application Studio 里创建一个基于 CAP 模型的最简单的 OData 服务的学习.换言之,大家已经在 ...

  6. navicat/dataGrip in IDEA/vscode/搭建mysql学习环境/beginner利用小皮控制面板(phpStudy)来快速搭建mysql的运行环境/生成测试数据并填充到表

    文章目录 navicat dataGrip (database plugin of IDEA) IDEA (Ultimate ) plugin for database 基本使用 sql consol ...

  7. 数据采集之测试数据的造数

    目录 0 环境准备: 1 软件环境的搭建 1.1 jdk的安装 1.2 scala的安装 1.3 hadoop的安装 1.4 KAFKA的安装 1.5 elastocsearch的安装 1.6 red ...

  8. 浏览器之战:烽烟再起?

    我承认这个题目有点哗众取宠... 宣战:IE归来 在几个预览demo之后,微软终于在2011/2/10发布了他们的IE9 beta版本.为了壮势,微软在IE博客里用一些demo和测试数据来证明IE9比 ...

  9. 利用Python Faker库制造测试数据

    在软件需求.开发.测试过程中,有时候需要使用一些测试数据,针对这种情况,我们一般要么使用已有的系统数据,要么需要手动制造一些数据. 由于现在的业务系统数据多种多样,千变万化.在手动制造数据的过程中,可 ...

最新文章

  1. C++ 模板详解(一)
  2. 厉害了,BATJ 必考的 Java 面试题!
  3. Layer 父子页面之间的交互
  4. 将任意图像转成 HTML5 Canvas
  5. 第一款Layer 2钱包Rollups Wallet已上线苹果AppStore
  6. 两个框架之间的数据类型转换,需要桥接技术
  7. 三思笔记_在使用buildconfig调试之前要三思
  8. unity基础(1)——unity编辑器的基本介绍
  9. gaster字体转换器_gaster语言翻译器
  10. LPC1788启动代码分析
  11. 卷积的本质及物理意义
  12. 学习帮——懒人菜谱,电饭煲可以做的菜!
  13. 【学习笔记】使用OpenSSL生成CA证书-配置Nginx代理服务器使用HTTPS协议
  14. base64编码解码讲解
  15. 狼 我一头独狼 在狂奔 嗅找正正狼群
  16. 青春三部曲(《且听风吟》,《一九七三年的弹子球》,《寻羊冒险记》)--[日]村上春树...
  17. 用快解析内网穿透实现零成本自建网站
  18. 十五天学会Autodesk Inventor,看完这一系列就够了(九),主题/色彩/单位设置
  19. 计划赶不上变化,为什么还要计划呢?
  20. 易之 - 我是个大师(2014年3月6日)

热门文章

  1. mysql8 设置了默认值 CURRENT_TIMESTAMP 依然报null问题
  2. ionic4 hammerjs手势事件左滑右滑
  3. html获取contextpath,JavaScript中${pageContext.request.contextPath}取值问题及解决方案
  4. html5制作拼图游戏教程,用HTML5制作视频拼图的教程
  5. linux脚本done报错,很简单的脚本程序,总是报错
  6. 2017模拟计算机考试试题,2017年计算机考试四级模拟试题及答案
  7. 智能灯控制页面用HTML编写,智能家居系统中智能化灯光控制的设计实现
  8. python写乘法口诀表好记方法_如何用python编写乘法口诀表
  9. app运行租用服务器,app租用服务器
  10. 网页中竖的目录怎么改成横的_一点基础也没有,想快速练漂亮硬笔字,先练什么?怎么练进步明显?...