AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > Delphi

第二十章 开发Delphi对象式数据管理功能(三)

51自学网 http://www.51zixue.net

 

 

20.2.1.2 TFiler对象的实现原理

 

  TFiler对象是Filer对象的基础类,它定义的大多数方法都是抽象类型的,没有具体实现它,这些方法要在TReaderTWrite中覆盖。但它们提供了Filer对象的框架,了解它无疑是很重要的。

  1. TFiler对象属性的实现

  TFiler对象定义了三个属性:RootAncestorIgnoreChildren。正如定义对象属性通常所采用的方法那样,要在private部分定义存储属性值的数据域,然后在publicPublished部分定义该属性,并按需要增加读写控制。它们的定义如下:

  

TFiler = class(TObject)

private

FRoot: TComponent;

FAncestor: TPersistent;

FIgnoreChildren: Boolean;

public

property Root: TComponent read FRoot write FRoot;

property Ancestor: TPersistent read FAncestor write FAncestor;

property IgnoreChildren: Boolean read FIgnoreChildren write FIgnoreChildren;

end;

 

  它们在读写控制上都是直接读写私有的数据域。

  在介绍TReaderTWriter的实现,我们还会看到这几个属性的原理介绍。

  2. TFiler对象方法的实现

  在TFiler对象定义的众多方法中很多都是抽象类方法,没有具体实现。在TFiler 的后继对象TReader中覆盖了这些方法。在后面章节,会介绍这些方法的实现。

  在TFiler对象中有具体实现的有两个方法CreateDestroy

  ⑴ Create方法的实现

  Create方法是TFiler的构造方法,它有两个参数StreamBufSizeStream是指定与TFiler对象相联系的Stream对象,Filer对象都是用Stream对象完成具体的读写。BufSizeTFiler对象内部开设的缓冲区的大小。Filer对象内部开设缓冲区是为了加快数据的读写,它的实现如下:

 

constructor TFiler.Create(Stream: TStream; BufSize: Integer);

begin

FStream := Stream;

GetMem(FBuffer, BufSize);

FBufSize := BufSize;

end;

 

  FStreamFBufferFBufSize都是TFilerprivate部分定义的数据域。FStream表示与Filer对象相联的Stream对象,FBuffer指向Filer对象内部开设的缓冲区,FBufSize是内部缓冲区的大小。Create方法用Stream参数值给FStream赋值,然后用GetMem分配BufSize大小的动态内存作为内部缓冲区。

  ⑵ Destroy方法的实现

  Destroy方法是TFiler对象的析构函数,它的作用就是释放动态内存。

 

destructor TFiler.Destroy;

begin

if FBuffer <> nil then FreeMem(FBuffer, FBufSize);

end;

 

20.2.2 TWriter对象

 

  TWriter 对象是可实例化的,往流中写数据的Filer对象。TWriter对象直接从TFiler继承而来,除了覆盖从TFiler继承的方法外,还增加了大量的关于写各种数据类型(IntegerStringComponent)的方法。TWriter对象和TReader 对象配合使用将使对象读写发挥巨大作用。

 
 

上一篇:第二十章 开发Delphi对象式数据管理功能(四)  下一篇:第二十章 开发Delphi对象式数据管理功能(二)