程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 第二十章-開發Delphi對象式數據管理功能(三)(2)

第二十章-開發Delphi對象式數據管理功能(三)(2)

編輯:Delphi

20.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);

begin

FStream := 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;

begin

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

end;

20.2.2 TWriter對象

TWriter 對象是可實例化的,往流中寫數據的Filer對象。TWriter對象直接從TFiler繼承而來,除了覆蓋從TFiler繼承的方法外,還增加了大量的關於寫各種數據類型(如Integer、String和Component等)的方法。TWriter對象和TReader 對象配合使用將使對象讀寫發揮巨大作用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved