知识大全 开发Delphi对象式数据管理功能(三)[2]
Posted 知
篇首语:不怕读得少,只怕记不牢。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 开发Delphi对象式数据管理功能(三)[2]相关的知识,希望对你有一定的参考价值。
DELPHI基础教程:开发Delphi对象式数据管理功能(三)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
⑵ Destroy方法的实现
Destroy方法是TFiler对象的析构函数 它的作用就是释放动态内存
destructor TFiler Destroy;
begin
if FBuffer <> nil then FreeMem(FBuffer FBufSize)
end;
riter对象
riter 对象是可实例化的 往流中写数据的Filer对象 riter对象直接从TFiler继承而来 除了覆蓋从TFiler继承的方法外 还增加了大量的关于写各种数据类型(如Integer String和Component等)的方法 riter对象和TReader 对象配合使用将使对象读写发挥巨大作用
riter对象的属性和方法
Position属性
声明
property Position: Longint;riter对象的Position属性表示相关联的流中的当前要写的位置 TReader 对象也有这个属性 但与TReader对象不同的是riter对象的Position的值比流的Position值小 这一点一看属性实现就清楚了
RootAncesstor属性
声明
property RootAncestor: TComponent;RootAncestor属性表示的是Root属性所指的部件的祖先 如果Root 是继承的窗体 Writer对象将窗体拥有部件与祖先窗体中的相应部件依次比较 然后只写入那些与祖先中的不同的部件
Write方法
声明
procedure Write(const Buf; Count: Longint)Write方法从Buf中往与Writer相关联的流中写入Count个字节
WriteListBegin方法
声明
procedure WriteListBegin;WriteListBegin方法往Write对象的流中写入项目列表开始标志 该标志意味着后面存储有一连串的项目 Reader对象 在读这一连串项目时先调用ReadListBegin方法读取该标志位 然后用EndOfList判断是否列表结束 并用循环语句读取项目 在调用WriteListBegin方法的后面必须调用WriteListEnd方法写列表结束标志 相应的在Reader对象中有ReadListEnd方法读取该结束标志
WriteListEnd方法
声明
procedure WriteListEnd;WriteListEnd方法在流中 写入项目列表结束标志 它是与WriteListBegin相匹配的方法
WriteBoolean方法
声明
procedure WriteBoolean(Value: Boolean)WriteBoolean方法将Value传入的布尔值写入流中
WriteChar方法
声明
procedure WriteChar(Value: char)WriteChar方法将Value中的字符写入流中
WriteFloat方法
声明
procedure WriteFloat(Value: Extended)WriteFloat方法将Value传入的浮点数写入流中
WriteInteger方法
声明
procedure WriteInteger(Value: Longint)WriteInteger方法将Value中的整数写入流中
WriteString方法
声明
procedure WriteString(const Value: string)WriteString方法将Value中的字符串写入流中
WriteIdent方法
声明
procedure WriteIdent(const Ident: string)WriteIdent方法将Ident传入的标识符写入流中
WriteSignature方法
声明
procedure WriteSignature;WriteSignature方法将Delphi Filer对象标签写入流中 WriteRootComponent方法在将部件写入流之前先调用WriteSignature方法写入Filer标签 Reader对象在读部件之前调用ReadSignature方法读取该标签以指导读操作
WritComponent方法
声明
procedure WriteComponent(Component: TComponent)WriteComponent方法调用参数Component的WriteState方法将部件写入流中 在调用WriteState之前 WriteComponent还将Component的ComponetnState属性置为csWriting 当WriteState返回时再清除csWriting
WriteRootComponent方法
声明
procedure WriteRootComponent(Root: TComponent)WriteRootComponent方法将Writer对象Root属性设为参数Root带的值 然后调用WriteSignature方法往流中写入Filer对象标签 最后调用WriteComponent方法在流中存储Root部件
riter对象的实现
riter对象提供了许多往流中写各种类型数据的方法 这对于程序员来说是很重要的功能 rite对象往流中写数据是依据不同的数据采取不同的格式的 因此要掌握riter对象的实现和应用方法 必须了解Writer对象存储数据的格式
首先要说明的是 每个Filer对象的流中都包含有Filer对象标签 该标签占四个字节其值为 TPF Filer对象为WriteSignature和ReadSignature方法存取该标签 该标签主要用于Reader对象读数据(部件等)时 指导读操作
其次 Writer对象在存储数据前都要留一个字节的标志位 以指出后面存放的是什么类型的数据 该字节为TValueType类型的值 TValueType是枚举类型 占一个字节空间 其定义如下
TValueType = (VaNull VaList VaInt VaInt VaInt VaEntended VaString VaIdent
VaFalse VaTrue VaBinary VaSet VaLString VaNil VaCollection)
因此 对Writer对象的每一个写数据方法 在实现上 都要先写标志位再写相应的数据 而Reader对象的每一个读数据方法都要先读标志位进行判断 如果符合就读数据 否则产生一个读数据无效的异常事件 VaList标志有着特殊的用途 它是用来标识后面将有一连串类型相同的项目 而标识连续项目结束的标志是VaNull 因此 在Writer对象写连续若干个相同项目时 先用WriteListBegin写入VaList标志 写完数据项目后 再写出VaNull标志 而读这些数据时 以ReadListBegin开始 ReadListEnd结束 中间用EndofList函数判断是否有VaNull标志
下面就介绍它们的实现
riter对象属性的实现
riter对象直接从TFiler对象继承 它只增加了Position和RootAncestor属性
RootAncestor属性在private部分有数据域FRootAncestor存入其值 在属性定义的读与控制上都是直接读取该值
cha138/Article/program/Delphi/201311/25097相关参考
DELPHI基础教程:开发Delphi对象式数据管理功能(三)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快
DELPHI基础教程:开发Delphi对象式数据管理功能(三)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快
DELPHI基础教程:开发Delphi对象式数据管理功能(一)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快
DELPHI基础教程:开发Delphi对象式数据管理功能(二)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快
DELPHI基础教程:开发Delphi对象式数据管理功能(四)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快
DELPHI基础教程:开发Delphi对象式数据管理功能(五)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快
DELPHI基础教程:开发Delphi对象式数据管理功能(一)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快
DELPHI基础教程:开发Delphi对象式数据管理功能(二)[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快
DELPHI基础教程:开发Delphi对象式数据管理功能(一)[5] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快
DELPHI基础教程:开发Delphi对象式数据管理功能(一)[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快