- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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
您可能关注的文档
- 公开课,圆的认识.ppt
- 公开课《智子疑邻》《塞翁失马》.ppt
- DB510100T203—2016球墨铸铁可调式防沉降检查井盖.doc
- DCDC变换器设计总结.docx
- C非代码题.docx
- DC-DC器件选型.ppt
- 公开课《跨越百年的美丽》教学课件课件.ppt
- D3-2-Safetypillarreview-安全支柱回顾-1课案.pptx
- 公开课-化学会考实验复习课件.ppt
- 公司组网图标库(位图).ppt
- 答案基础知识水平技能模块纸中博f6uk dec.pdf
- 成果william h mcraven知识点结文WilliamH Mcraven.pdf
- 此内容已从iopscience向下滚动以查看全文tmrice epl 011.pdf
- diet节菜肴人会相信健康ufc holiday dishes04 Ufcdolce饮食假.pdf
- crs全球征税背景下大陆高净值人士财产隐身与税务筹划攻略土豪必读.pdf
- 浙江联合利华俱乐部大三二面大二.pdf
- 冬季假期阅读级单词计数访问各级别级本书.pdf
- 在洪水力系数上开口端短长度挤压电影阻尼器从理论到练习后背gt2017-63152.pdf
- 该由印刷页面空白页一个报告组成.pdf
- sigma-a4978共aldrich安全数据表.pdf
文档评论(0)