没有合适的资源?快使用搜索试试~ 我知道了~
TStream类说明文档
资源详情
资源评论
资源推荐
TStream
求助编辑百科名片
本词条主要介绍 TStream
Stream 对象,又称流式对象,是
TStream、THandleStream、TFileStream、TMemoryStream、TResourceStream 和
TBlobStream 等的统称。它们分别代表了在各种媒介上存储数据的能力,它们将各种数据
类型(包括对象和部件)
Delphi TStream 详细介绍
在内存、外存和数据库字段中的管理操作抽象为对象方法,并且充分利用了面向对象
技术的优点,应用程序可以相当容易地在各种 Stream 对象中拷贝数据。
下面介绍各种对象的数据和方法及使用方法。
TStream 对象
TStream 对象是能在各种媒介中存储二进制数据的对象的抽象对象。从 TStream 对象
继承的对象用于在内存、Windows 资源文件、磁盘文件和数据库字段等媒介中存储数据。
Stream 中定义了两个属性:Size 和 Position。它们分别以字节为单位表示的流的大小
和当前指针位置。TStream 中定义的方法用于在各种流中读、写和相互拷贝二进制数据。
因为所有的 Stream 对象都是从 TStream 中继承来的,所以在 TStream 中定义的域和方法
都能被 Stream 对象调用和访
问。此外,又由于面向对象技术的动态联编功能,TStream 为各种流的应用提供了统
一的接口,简化了流的使用;不同 Stream 对象是抽象了对不同存储媒介的数据上的操作,
因此,TStream 的需方法为在不同媒介间的数据拷贝提供了最简捷的手段。
TStream 的属性和方法
1. Position 属性
声明:property Position: Longint;
Position 属性指明流中读写的当前偏移量。
2. Size 属性
声明:property Size: Longint;
Size 属性指明了以字节为单位的流的的大小,它是只读的。
3. CopyFrom 方法
声明:function CopyFrom(Source: TStream; Count: Longint): Longint;
CopyFrom 从 Source 所指定的流中拷贝 Count 个字节到当前流中, 并将指针从当前
位置移动 Count 个字节数,函数返回值是实际拷贝的字节数。
4. Read 方法
声明:function Read(var Buffer; Count: Longint): Longint; virtual; abstract;
Read 方法从当前流中的当前位置起将 Count 个字节的内容复制到 Buffer 中,并把当
前指针向后移动 Count 个字节数,函数返回值是实际读的字节数。如果返回值小于
Count,这意味着读操作在读满所需字节数前指针已经到达了流的尾部。
Read 方法是抽象方法。每个后继 Stream 对象都要根据自己特有的有关特定存储媒介
的读操作覆盖该方法。而且流的所有其它的读数据的方法(如:
ReadBuffer,ReadComponent 等)在完成实际的读操作时都调用了 Read 方法。面向对
象的动态联编的优点就体现在这儿。因为后继 Stream 对
象只需覆盖 Read 方法,而其它读操作(如 ReadBuffer、ReadComponent 等)都不需要
重新定义,而且 TStream 还提供了统一的接口。
5. ReadBuffer 方法
声明:procedure ReadBuffer(var Buffer; Count: Longint);
ReadBuffer 方法从流中将 Count 个字节复制到 Buffer 中, 并将流的当前指针向后移
动 Count 个字节。如读操作超过流的尾部,ReadBuffer 方法引起 EReadError 异常事件。
6. ReadComponent 方法
声明:function ReadComponent(Instance: TComponent): TComponent;
ReadComponent 方法从当前流中读取由 Instance 所指定的部件,函数返回所读的部
件。ReadComponent 在读 Instance 及其拥有的所有对象时创建了一个 Reader 对象并调
用它的 ReadRootComponent 方法。
如果 Instance 为 nil,ReadComponent 的方法基于流中描述的部件类型信息创建部件,
并返回新创建的部件。
7. ReadComponentRes 方法
声明:function ReadComponentRes(Instance: TComponent): TComponent;
ReadComponentRes 方法从流中读取 Instance 指定的部件,但是流的当前位置必须
是由 WriteComponentRes 方法所写入的部件的位置。
ReadComponentRes
首先调用 ReadResHeader 方法从流中读取资源头,然后调用 ReadComponent 方法
读取 Instance。如果流的当前位置不包含一个资源头。ReadResHeader 将引发一个
EInvalidImage 异常事件。在 Classes 库单元中也包含一个名为 ReadComponentRes 的函
数,该函数执行相同的操作,只不过它基于应
用程序包含的资源建立自己的流。
8. ReadResHeader 方法
声明:procedure ReadResHeader;
ReadResHeader 方法从流的当前位置读取 Windows 资源文件头,并将流的当前位置
指针移到该文件头的尾部。如果流不包含一个有效的资源文件头,ReadResHeader 将引
发一个 EInvalidImage 异常事件。
流的 ReadComponentRes 方法在从资源文件中读取部件之前,会自动调用
ReadResHeader 方法,因此,通常程序员通常不需要自己调用它。
9. Seek 方法
声明:function Seek(Offset: Longint; Origin: Word): Longint; virtual; abstract;
Seek 方法将流的当前指针移动 Offset 个字节,字节移动的起点由 Origin 指定。如果
Offset 是负数,Seek 方法将从所描述的起点往流的头部移动。下表中列出了 Origin 的不同
取值和它们的含义:
函数 Seek 的参数的取值
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
常量 值 Seek 的起点 Offset 的取值
─────────────────────────────────
SoFromBeginning 0 流的开头 正 数
SoFromCurrent 1 流的当前位置 正数或负数
SoFromEnd 2 流的结尾 负 数
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
10. Write 方法
在 Delphi 对象式管理的对象中有两类对象的方法都有称为 Write 的:Stream 对象和
Filer 对象。Stream 对象的 Write 方法将数据写进流中。Filer 对象通过相关的流传递数据,
在后文中会介绍这类方法。
Stream 对象的 Write 方法声明如下:
function Write(const Buffer; Count: Longint): Longint; virtual; abstract;
Write 方法将 Buffer 中的 Count 个字节写入流中,并将当前位置指针向流的尾部移动
Count 个字节,函数返回写入的字节数。
TStream 的 Write 方法是抽象的,每个继承的 Stream 对象都要通过覆盖该方法来提供
向特定存储媒介(内存、磁盘文件等)写数据的特定方法。流的其它所有写数据的方法(如
WriteBuffer、WriteComponent)都调用 Write 担当实际的写操作。
11. WriteBuffer 方法
声明:procedure WriteBuffer(const Buffer; Count: Longint);
WriteBuffer 的功能与 Write 相似。WriteBuffer 方法调用 Write 来执行实际的写操作,
如果流没能写所有字节,WriteBuffer 会触发一个 EWriteError 异常事件。
12. WriteComponent 方法
在 Stream 对象和 Filer 对象都有被称为 WriteComponent 的方法。Stream 对象的
WriteComponent 方法将 Instance 所指定的部件和它所包含的所有部件都写入流中;Writer
对象的 WriteComponent 将指定部件的属性值写入 Writer 对象的流中。
Stream 对象的 WriteComponent 方法声明是这样的:
procedure WriteComponent(Instance: Tcomponent);
WriteComponent 创建一个 Writer 对象,并调用 Writer 的 WriteRootComponent 方法
将 Instance 及其拥有的对象写入流。
13. WriteComponentRes 方法
声明:WriteComponentRes(const ResName: String; Instance: TComponent);
WriteComponentRes 方法首先往流中写入标准 Windows 资源文件头,然后将
Instance 指定的部件写入流中。要读由 WriteComponentRes 写入的部件,必须调用
ReadComponentRes 方法。
WriteComponentRes 使用 ResName 传入的字符串作为资源文件头的资源名,然后调
用 WriteComponent 方法将 Instance 和它拥有的部件写入流。
14. WriteDescendant 方法
声明:procedure WriteDescendant(Instance Ancestor: TComponent);
Stream 对象的 WriteDescendant 方法创建一个 Writer 对象,然后调入该对象的
WriteDescendant 方法将 Instance 部件写入流中。Instance 可以是从 Ancestor 部件继承的
窗体,也可以是在从祖先窗体中继承的窗体中相应于祖先窗体中 Ancestor 部件的部件。
15. WriteDescendantRes 方法
声明:procedure WriteDescendantRes(const ResName: String;
Instance, Ancestor: TComponent);
剩余10页未读,继续阅读
zhuimeng~
- 粉丝: 5
- 资源: 39
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0