- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Delphi_流操作的语法课案
谈 Delphi 编程中“流”的应用
陈经韬
什么是流?流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具。在流 中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作 的,而不用关心流的另一头数据的真正流向。流不但可以处理文件,还可以处理动态内存、网 络数据等多种数据形式。如果你对流的操作非常熟练,在程序中利用流的方便性,写起程序会 大大提高效率的。
下面,笔者通过四个实例:EXE 文件加密器、电子贺卡、自制 OICQ 和网络屏幕传输来说明
Delphi 编程中“流”的利用。这些例子中的一些技巧曾经是很多软件的秘密而不公开的,现在大
家可以无偿的直接引用其中的代码了。
“万丈高楼平地起”,在分析实例之前,我们先来了解一下流的基本概念和函数,只有在理解
了这些基本的东西后我们才能进行下一步。请务必认真领会这些基本方法。当然,如果你对它
们已经很熟悉了,则可以跳过这一步。
一、Delphi 中流的基本概念及函数声明
在 Delphi 中,所有流对象的基类为 TStream 类,其中定义了所有流的共同属性和方法。
TStream 类中定义的属性介绍如下:
1、Size:此属性以字节返回流中数据大小。
2、Position:此属性控制流中存取指针的位置。
Tstream 中定义的虚方法有四个:
1、Read:此方法实现将数据从流中读出。函数原形为:
Function Read(var Buffer?Count:Longint):Longint?virtual?abstract?
参数 Buffer 为数据读出时放置的缓冲区,Count 为需要读出的数据的字节数,该方法返回值为
实际读出的字节数,它可以小于或等于 Count 中指定的值。
2、Write:此方法实现将数据写入流中。函数原形为:
Function Write(var Buffer?Count:Longint):Longint?virtual?abstract?
参数 Buffer 为将要写入流中的数据的缓冲区,Count 为数据的长度字节数,该方法返回值为实
际写入流中的字节数。
3、Seek:此方法实现流中读取指针的移动。函数原形为:
Function Seek(Offset:Longint?Origint:Word):Longint?virtual?abstract?
参数 Offset 为偏移字节数,参数 Origint 指出 Offset 的实际意义,其可能的取值如下:
soFromBeginning:Offset 为移动后指针距离数据开始的位置。此时 Offset 必须大于或者等于零。
soFromCurrent:Offset 为移动后指针与当前指针的相对位置。
soFromEnd:Offset 为移动后指针距离数据结束的位置。此时 Offset 必须小于或者等于零。该方
法返回值为移动后指针的位置。
4、Setsize:此方法实现改变数据的大小。函数原形为:
Function Setsize(NewSize:Longint)?virtual?
另外,TStream 类中还定义了几个静态方法:
1、ReadBuffer:此方法的作用是从流中当前位置读取数据。函数原形为:
Procedure ReadBuffer(var Buffer?Count:Longint)?
参数的定义跟上面的 Read 相同。注意:当读取的数据字节数与需要读取的字节数不相同时,
将产生 EReadError 异常。
2、WriteBuffer:此方法的作用是在当前位置向流写入数据。函数原形为:
Procedure WriteBuffer(var Buffer?Count:Longint)?
参数的定义跟上面的 Write 相同。注意:当写入的数据字节数与需要写入的字节数不相同时, 将产生 EWriteError 异常。
3、CopyFrom:此方法的作用是从其它流中拷贝数据流。函数原形为:
Function CopyFrom(Source:TStream?Count:Longint):Longint?
参数 Source 为提供数据的流,Count 为拷贝的数据字节数。当 Count 大于 0 时,CopyFrom 从
Source 参数的当前位置拷贝 Count 个字节的数据;当 Count 等于 0 时,CopyFrom 设置 Source
参数的 Position 属性为 0,然后拷贝 Source 的所有数据;
TStream 还有其它派生类,其中最常用的是 TFileStream 类。使用 TFileStream 类来存取文件,
首先要建立一个实例。声明如下:
constructor Create(const Filename:s
文档评论(0)