网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
Delphi编程中的“流”
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式
  参数的定义跟上面的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:string;Mode:Word);
Filename为文件名(包括路径),参数Mode为打开文件的方式,它包括文件的打
开模式和共享模式,其可能的取值和意义如下:

打开模式:
fmCreate       :用指定的文件名建立文件,如果文件已经存在则打开它。
fmOpenRead     :以只读方式打开指定文件
fmOpenWrite    :以只写方式打开指定文件
fmOpenReadWrite:以写写方式打开指定文件
共享模式:
fmShareCompat   :共享模式与FCBs兼容
fmShareExclusive:不允许别的程序以任何方式打开该文件
fmShareDenyWrite:不允许别的程序以写方式打开该文件
fmShareDenyRead :不允许别的程序以读方式打开该文件
fmShareDenyNone :别的程序可以以任何方式打开该文件

   TStream还有一个派生类TMemoryStream,实际应用中用的次数也非
常频繁。它叫内存流,就是说在内存中建立一个流对象。它的基本方法和函数跟
上面是一样的。
   好了,有了上面的基础后,我们就可以开始我们的编程之行了。
-----------------------------------------------------------------------
二、实际应用之一:利用流制作EXE文件加密器、捆绑、自解压文件及安装程序

我们先来说一下如何制作一个EXE文件加密器吧。  
EXE文件加密器的原理:建立两个文件,一个用来添加资源到另外一个EXE文件
里面,称为添加程序。另外一个被添加的EXE文件称为头文件。该程序的功能是
把添加到自己里面的文件读出来。
  Windows下的EXE文件结构比较复杂,有的程序还有校验和,当发现自己被改变
后会认为自己被病毒感染而拒绝执行。所以我们把文件添加到自己的程序里面,
这样就不会改变原来的文件结构了。我们先写一个添加函数,该函数的功能是把
一个文件当作一个流添加到另外一个文件的尾部。函数如下:

Function Cjt_AddtoFile(SourceFile,TargetFile:string):Boolean;
var
Target,Source:TFileStream;
MyFileSize:integer;
begin
try
Source:=TFileStream.Create(SourceFile,fmOpenRead or fmShareExclusive);
Target:=TFileStream.Create(TargetFile,fmOpenWrite or fmShareExclusive);
try
Target.Seek(0,soFromEnd);//往尾部添加资源
Target.CopyFrom(Source,0);
MyFileSize:=Source.Size+Sizeof(MyFileSize);//计算资源大小,并写入辅程尾部
Target.WriteBuffer(MyFileSize,sizeof(MyFileSize));
finally
Target.Free;
Source.Free;
end;
except
Result:=False;
Exit;
end;
Result:=True;
end;
   有了上面的基础,我们应该很容易看得懂这个函数。其中参数SourceFile是
要添加的文件,参数TargetFile是被添加到的目标文件。比如说把a.exe添加到
b.exe里面可以:Cjt_AddtoFile(''a.exe'',b.exe'');如果添加成功就返回True否则
返回假。
 &

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号