| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 | 论坛
    想学好编程,学好外语很重要  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 应用开发 >> delphi >> 基础教程 >> 文章正文
第二十章 开发Delphi对象式数据管理功能(四)            【字体:
第二十章 开发Delphi对象式数据管理功能(四)
作者:不祥    文章来源:-    点击数:    更新时间:2006-12-12

  18. NextValue方法

  声明:function Nextvalue: TValuetype;

Nextvalue方法的作用也是返回Reader对象流中紧接着的项目的类型,它与ReadValue的区别在于并不移动指针位置。

  19. ReadBoolean方法

  声明:function ReadBoolean: Boolean;

ReadBoolean方法从Reader对象的流中读取一个布尔值,并相应地移动流位置指针。

  20、ReadChar方法

  声明:function ReadChar: char;

ReadChar方法从Reader对象的流中读取一个字符。

  21. ReadFloat方法

  声明:function ReadFloat: Extended;

  ReadFloat方法从流中读取浮点数。

  20. ReadIdent方法

  声明:function ReadIdent: string;

ReadIdent方法从流中读取标识符。

  23. ReadInteger方法

  声明:function ReadInteger: Longin

ReadInteger方法从流中读取整型数字。

24.ReadString方法

  声明:function Read String: string;

  ReadString方法从Reader对象的流中读取一个字符串,并返回字符串中的内容。该字符串是由Writer对象的WriteString方法写入。

 

20.2.3.2 TReader对象的实现

 

  Filer对象的作用主要是Delphi用来在DFM文件中读写各种类型的数据(包括部件对象)。这些数据的一个本质特征是变长,而且Filer对象将读写数据操作抽象化,包装成对象提供了大量的读写方法,方便了程序的调用。因此在应用程序中可以广泛使Filer对象,充分利用Delphi的面向对象技术。而且Filer对象与Stream对象捆绑在一起,一方面可以在各种存储媒介中存取任意格式的数据;另一方面,由于充分利用面向对象的动态联编,各种读写方法的使用方法是一致的,因此,方法调用很简单。下面我们着重介绍Reader 对象中与读写数据操作有关的属性和方法的实现。

  1. TReader属性的实现

  在TReader对象的属性实现中我们重点介绍Position的实现。

  Position属性的定义了使用了读写控制,它们分别是GetPosition和SetPosition方法。

 

TReader = class(TFiler)

private

function GetPosition: Longint;

procedure SetPosition(Value: Longint);

public

property Position: Longint read GetPosition write SetPosition;

end;

 

Postition的读写控制方法如下:

 

function TReader.GetPosition: Longint;

begin

Result := FStream.Position + FBufPos;

end;

 

procedure TReader.SetPosition(Value: Longint);

begin

FStream.Position := Value;

FBufPos := 0;

FBufEnd := 0;

end;

 

在TReader的父对象TFiler对象中介绍过FBufPos和FBufEnd变量。Filer对象内部分配了一个BufSize大小的缓冲区FBufPos就是指在缓冲区中的相对位置,FBufEnd是指在缓冲区中数据结束处的位置(缓冲区中的数据不一定会充满整个缓冲区)。

 在GetPosition方法中可以看到Reader对象的Position值和Stream对象的Position值是不同的。Reader对象多了一个FButPos的编移量。

  2. Defineproperty和DefineBinaryproperty方法的实现

这两个方法是虚方法,在TFiler中是抽象方法,在TReader和TWriter对象中才有具体的实现。

  它们在TReader中的实现如下:

  

procedure TReader.DefineProperty(const Name: string; ReadData: TReaderProc;

WriteData: TWriterProc; HasData: Boolean);

begin

if CompareText(Name, FPropName) = 0 then

begin

ReadData(Self);

FPropName := '';

end;

end;

 

procedure TReader.DefineBinaryProperty(const Name: string;

ReadData, WriteData: TStreamProc; HasData: Boolean);

var

Stream: TMemoryStream;

上一页  [1] [2] [3] [4] [5] [6] [7] [8] 下一页  

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • 第二十章 开发Delphi对象式…

  • 第二十章 开发Delphi对象式…

  • 第二十章 开发Delphi对象式…

  • 第二十章 开发Delphi对象式…

  • 第十九章 Delphi自定义部件…

  • 第十九章 Delphi自定义部件…

  • 第十九章 Delphi自定义部件…

  • 第十九章 Delphi自定义部件…

  • 第十八章 Delphi客户服务器…

  • 第十八章 Delphi客户服务器…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |