知识大全 开发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对象式数据管理功能(三)[3]

DELPHI基础教程:开发Delphi对象式数据管理功能(三)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 开发Delphi对象式数据管理功能(三)[1]

DELPHI基础教程:开发Delphi对象式数据管理功能(三)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 开发Delphi对象式数据管理功能(一)[2]

DELPHI基础教程:开发Delphi对象式数据管理功能(一)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 开发Delphi对象式数据管理功能(二)[2]

DELPHI基础教程:开发Delphi对象式数据管理功能(二)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 开发Delphi对象式数据管理功能(四)[2]

DELPHI基础教程:开发Delphi对象式数据管理功能(四)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 开发Delphi对象式数据管理功能(五)[2]

DELPHI基础教程:开发Delphi对象式数据管理功能(五)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 开发Delphi对象式数据管理功能(一)[3]

DELPHI基础教程:开发Delphi对象式数据管理功能(一)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 开发Delphi对象式数据管理功能(二)[4]

DELPHI基础教程:开发Delphi对象式数据管理功能(二)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 开发Delphi对象式数据管理功能(一)[5]

DELPHI基础教程:开发Delphi对象式数据管理功能(一)[5]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 开发Delphi对象式数据管理功能(一)[4]

DELPHI基础教程:开发Delphi对象式数据管理功能(一)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快