谈Delphi编程中“流”的应用

谈Delphi编程中“流”的应用

ID:36639766

大小:75.50 KB

页数:20页

时间:2019-05-13

谈Delphi编程中“流”的应用_第1页
谈Delphi编程中“流”的应用_第2页
谈Delphi编程中“流”的应用_第3页
谈Delphi编程中“流”的应用_第4页
谈Delphi编程中“流”的应用_第5页
资源描述:

《谈Delphi编程中“流”的应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、谈Delphi编程中“流”的应用参数Offset为偏移字节数,参数Origint指出Offset的实际意义,其可能的取值如下:soFromBeginning:Offset为移动后指针距离数据开始的位置。此时Offset必须大于或者等于零。soFromCurrent:Offset为移动后指针与当前指针的相对位置。soFromEnd:Offset为移动后指针距离数据结束的位置。此时Offset必须小于或者等于零。该方法返回值为移动后指针的位置。4、Setsize:此方法实现改变数据的大小。函数原形为:FunctionSet

2、size(NewSize:Longint);virtual;另外,TStream类中还定义了几个静态方法:1、ReadBuffer:此方法的作用是从流中当前位置读取数据。函数原形为:ProcedureReadBuffer(varBuffer;Count:Longint);参数的定义跟上面的Read相同。注意:当读取的数据字节数与需要读取的字节数不相同时,将产生EReadError异常。2、WriteBuffer:此方法的作用是在当前位置向流写入数据。函数原形为:ProcedureWriteBuffer(varBuffe

3、r;Count:Longint);参数的定义跟上面的Write相同。注意:当写入的数据字节数与需要写入的字节数不相同时,将产生EWriteError异常。3、CopyFrom:此方法的作用是从其它流中拷贝数据流。函数原形为:FunctionCopyFrom(Source:TStream;Count:Longint):Longint;参数Source为提供数据的流,Count为拷贝的数据字节数。当Count大于0时,CopyFrom从Source参数的当前位置拷贝Count个字节的数据;当Count等于0时,CopyFr

4、om设置Source参数的Position属性为0,然后拷贝Source的所有数据;TStream还有其它派生类,其中最常用的是TFileStream类。使用TFileStream类来存取文件,首先要建立一个实例。声明如下:constructorCreate(constFilename:string;Mode:Word);Filename为文件名(包括路径),参数Mode为打开文件的方式,它包括文件的打开模式和共享模式,其可能的取值和意义如下:打开模式:fmCreate:用指定的文件名建立文件,如果文件已经存在则打开它

5、fmOpenRead:以只读方式打开指定文件fmOpenWrite:以只写方式打开指定文件fmOpenReadWrite:以写写方式打开指定文件共享模式:fmShareCompat:共享模式与FCBs兼容fmShareExclusive:不允许别的程序以任何方式打开该文件fmShareDenyWrite:不允许别的程序以写方式打开该文件fmShareDenyRead:不允许别的程序以读方式打开该文件fmShareDenyNone:别的程序可以以任何方式打开该文件TStream还有一个派生类TMemoryStream,实

6、际应用中用的次数也非常频繁。它叫内存流,就是说在内存中建立一个流对象。它的基本方法和函数跟上面是一样的。好了,有了上面的基础后,我们就可以开始我们的编程之行了。-----------------------------------------------------------------------二、实际应用之一:利用流制作EXE文件加密器、捆绑、自解压文件及安装程序 我们先来说一下如何制作一个EXE文件加密器吧。  EXE文件加密器的原理:建立两个文件,一个用来添加资源到另外一个EXE文件里面,称为添加程序。另外

7、一个被添加的EXE文件称为头文件。该程序的功能是把添加到自己里面的文件读出来。Windows下的EXE文件结构比较复杂,有的程序还有校验和,当发现自己被改变后会认为自己被病毒感染而拒绝执行。所以我们把文件添加到自己的程序里面,这样就不会改变原来的文件结构了。我们先写一个添加函数,该函数的功能是把一个文件当作一个流添加到另外一个文件的尾部。函数如下:FunctionCjt_AddtoFile(SourceFile,TargetFile:string):Boolean;varTarget,Source:TFileStrea

8、m;MyFileSize:integer;begintrySource:=TFileStream.Create(SourceFile,fmOpenReadorfmShareExclusive);Target:=TFileStream.Create(TargetFile,fmOpenWriteorfmShareExclusive);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。