当前位置:七道奇文章资讯编程技术Delphi编程
日期:2011-03-20 17:55:00  来源:本站整理

第二十章 开辟Delphi对象式数据管理功效(四)[Delphi编程]

赞助商链接



  本文“第二十章 开辟Delphi对象式数据管理功效(四)[Delphi编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

20.2.3 TReader对象 

  TReader对象是可实例化的用于从相接洽的流中读取数据的Filer对象.TReader对象从TFiler担当下来,除了从TFiler担当的属性和办法外,TReader声明了不少属性、办法和事件.

  OwnerParent属性用于表示从Reader对象的流中读取的部件的拥有者和双亲结点.OnError,OnFindMethodOnSetName事件使利用程序在运行中读数据时能定制呼应方法.除了覆盖了一些从TFiler对象中担当的办法外,TReader对象还定义大量的读差别范例的数据和触发事件的办法.

 

20.2.3.1 TReader对象的属性和办法

 

  1. Owner属性

  声明:property Owner: TComponent;

Reader对象的Owner属性存储了将用来给从Reader的流中读出的部件的Owner属性赋值的部件.

  2. Parent属性

  声明:property Parent: TComponent;

Parent属性存储将用来给从Reader的流中读出全部掌握的Parent属性赋值的部件.

  3. Position属性

  声明:propertion: Longint;

Reader对象的Position属性表示相联的流中读的当前位置.Position的值还应包含读缓冲区的大小.关于Reader 对象,Position的值大于流的Position 的值.假如将Position的值设得超越当前缓冲区,将惹起调用FlushBuffer.

  4. BeginReferences办法

  声明:procedure BeginReferences;

BeginReferences办法启动一连串关于读部件的号令,这些部件包含彼此间的穿插引用.在利用上普通和FixupReferencesEndReferences一同放在Tryfinally程序块中.

  在调用了BeginReferences后,Reader对象成立读取全部对象和名字的列表.全部的独立对象被读出后,调用FixupReferences办法将名字的彼此从流中转移到对象实例中.最后调用EndReferences办法释放列表.

  处理部件彼此引用的程序块情势以下:

 

BeginReferences; { 成立暂时列表 }

try

{ 读出全部部件并将它们的名字放在一暂时列表中 }

FixupReferences; { }

finally

EndReferences; { 释放暂时列表 }

end;

 

  5. FixUpReferences办法

  声明:procedure FixupReferences;

FixupReferences办法分化从流中读出的存在各种彼此依靠部件的引用关系.FixupReferences总在tryfinally块中并配合BeginReferencesEndReferences一同利用.

  6. EndReferences办法

  声明:procedure EndReferences;

EndReferences办法终止处理彼此引用的块操作,释放对象列表.它总配合BeginReferencesFixupReferences一同利用.

  7. ReadListBegin办法

  声明:procedure ReadListBegin;

ReadListBegin办法从Reader对象相联的流中读取列表开始标志.假如流中紧接着要读取的项目不是一个由WritelistBegin办法写入的列表起始标志,ReadListBegin将惹起一个读非常事件.

  普通在调用ReadlistBegin办法之后,紧随着一个读项目的循环,循环以EndfList办法返回True 终止条件.这时,预示流中的下一个项目是列表完毕标志,需求调用ReadListEnd办法.

  8. ReadListEnd办法

  声明:procedure ReadListEnd;

ReadListEnd 办法从流中读取列表完毕标志.假如所读的项目不是一个列表完毕标志,ReadListEnd办法引发一个EReadError非常事件.

  9. EndOfList办法

  声明:function EndOfList: Boolean;

假如Reader对象读到项目列表后果标志,EndOfList办法返回True.

  TStrings对象在从Reader对象读取项目列表时利用了ReadListBeginReadListEnd办法.下面的ReadDataTStrings的办法,用于在DefineProperties方面中读string数据.

 

procedure TStrings.ReadData(Reader: TReader);

begin

Reader.ReadListBegin; { 读列表开始标志 }

Clear; { 排除已有的字符串 }

while not Reader.EndOfList do { 只要还有数据 }

Add(Reader.ReadString); { …读一个字符串并将其加在列表中 }

Reader.ReadListEnd; { 越过列表完毕标志 }

end;

 

10. ReadSignature办法

  声明:procedure ReadSignature;

ReadSignature办法从流中读取部件之前首先调用ReadSignature办法.在载入对象之前检测标签.Reader对象就可以避免忽视粗心,招致读取无效或过期的数据.Filer标签是四个字符,关于Delphi 2.0,该标签是"TPF0".

  11. ReadPrefix办法

  声明:procedure ReadPrefix(var Plags: TFilerFlags; var AChild, Pos: Integer);

ReadPrefix办法的功效与ReadSignature的很相象,只不过它是读取流中部件前面的标志(PreFix).当一个Write对象将部件写入流中时,它在部件前面预写了两个值,第一个值是指明部件能否是从祖先窗体中担当的窗体和它在窗体中的位置能否重要的标志;第二个值指明它在祖先窗体成立次序.ReadComponent办法自动调用ReadPrefix.但假如需求独立读取部件的预读标志,也可直接调用该方向.

  12. OnFindMethod事件

  声明:property OnFindMethod: TFindMethodEvent;

OnFindMethod事件,发生在Reader对象读取对象的办法指针时,属性为办法指针的普通都是事件.

  呼应OnFindMethod事件的来由,普通是处理历程找不到办法的情形.在FindMethod办法没有找到由Name指定的办法的情形下,假如它将OnFindMethod办法的Error 参数设为True,将惹起ReadError非常事件;反之,将Error参数置为False,将避免FindMethod办法引发非常事件.

  13. Error办法

  声明:function Error(const Message: String): Boolean; virtual;

Error办法定义在Reader对象的protected部份,它是用于Reader对象的OnError事件.其返回值决意能否持续错误处理历程.假如返回值为True,则表示用程序该当持续错误处理;假如返回值为False,则表示错误情形被忽视.

  假如读部件或属性出错.Reader对象调用Error办法.缺省情形下,Error将返回值设为False,然后调用OnError事件处理历程.

  TReader对象老是在tryexcept程序块的except部份,并供利用户忽视错误的机会.Error的利用办法以下:

 

  try

{ 读部件 }

except

on E: Exception do

begin

…{ 履行一些排除操作 }

if Error(E.Message) then raise;

end;

end;


  以上是“第二十章 开辟Delphi对象式数据管理功效(四)[Delphi编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 第二十章 开辟Delphi对象式数据管理功效(五)
  • 第二十章 开辟Delphi对象式数据管理功效(四)
  • 第二十章 开辟Delphi对象式数据管理功效(三)
  • <b>第二十章 开辟Delphi对象式数据管理功效(二)</b>
  • 第二十章 开辟Delphi对象式数据管理功效(一)
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .