首页 / 软件开发 / Delphi / 第二十章-开发Delphi对象式数据管理功能(三)(2)
第二十章-开发Delphi对象式数据管理功能(三)(2)2007-05-0720.2.1.2 TFiler对象的实现原理TFiler对象是Filer对象的基础类,它定义的大多数方法都是抽象类型的,没有具体实现它,这些方法要在TReader和TWrite中覆盖。但它们提供了Filer对象的框架,了解它无疑是很重要的。1. TFiler对象属性的实现TFiler对象定义了三个属性:Root、Ancestor和IgnoreChildren。正如定义对象属性通常所采用的方法那样,要在private部分定义存储属性值的数据域,然后在public或Published部分定义该属性,并按需要增加读写控制。它们的定义如下: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;它们在读写控制上都是直接读写私有的数据域。在介绍TReader和TWriter的实现,我们还会看到这几个属性的原理介绍。2. TFiler对象方法的实现在TFiler对象定义的众多方法中很多都是抽象类方法,没有具体实现。在TFiler 的后继对象TReader中覆盖了这些方法。在后面章节,会介绍这些方法的实现。在TFiler对象中有具体实现的有两个方法Create和Destroy。⑴ Create方法的实现Create方法是TFiler的构造方法,它有两个参数Stream和BufSize。Stream是指定与TFiler对象相联系的Stream对象,Filer对象都是用Stream对象完成具体的读写。BufSize是TFiler对象内部开设的缓冲区的大小。Filer对象内部开设缓冲区是为了加快数据的读写,它的实现如下:constructor TFiler.Create(Stream: TStream; BufSize: Integer);beginFStream := Stream;GetMem(FBuffer, BufSize);FBufSize := BufSize;end;FStream、FBuffer和FBufSize都是TFiler在private部分定义的数据域。FStream表示与Filer对象相联的Stream对象,FBuffer指向Filer对象内部开设的缓冲区,FBufSize是内部缓冲区的大小。Create方法用Stream参数值给FStream赋值,然后用GetMem分配BufSize大小的动态内存作为内部缓冲区。⑵ Destroy方法的实现Destroy方法是TFiler对象的析构函数,它的作用就是释放动态内存。destructor TFiler.Destroy;beginif FBuffer <> nil then FreeMem(FBuffer, FBufSize);end;20.2.2 TWriter对象TWriter 对象是可实例化的,往流中写数据的Filer对象。TWriter对象直接从TFiler继承而来,除了覆盖从TFiler继承的方法外,还增加了大量的关于写各种数据类型(如Integer、String和Component等)的方法。TWriter对象和TReader 对象配合使用将使对象读写发挥巨大作用。