手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

用DELPHI实现文件加密压缩

来源:互联网 作者:西部数码 时间:2008-04-11
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!


Tstream常见派生类:
TFileStream (文件流的存取)
TStringStream (处理内存中的字符串类型数据)
TmemoryStream (对于工作的内存区域数据处理)
TBlobStream (BLOB类型字段的数据处理)
TwinSocketStream (socket的读写处理)
ToleStream (COM接口的数据处理)
TresourceStream (资源文件流的处理)
其中最常用的是TFileStream类。使用TFileStream类来存取文件,首先要建立一个实例。声明如下:
constructor Create(const Filename:string;Mode:Word);
Filename为文件名(包括路径)
Mode为打开文件的方式,它包括文件的打开模式和共享模式,其可能的取值和意义如下:
打开模式:
fmCreate :用指定的文件名建立文件,如果文件已经存在则打开它。
fmOpenRead :以只读方式打开指定文件
fmOpenWrite :以只写方式打开指定文件
fmOpenReadWrite:以写写方式打开指定文件
共享模式:
fmShareCompat :共享模式与FCBs兼容
fmShareExclusive:不允许别的程序以任何方式打开该文件
fmShareDenyWrite:不允许别的程序以写方式打开该文件
fmShareDenyRead :不允许别的程序以读方式打开该文件
fmShareDenyNone :别的程序可以以任何方式打开该文件


(三)资源文件
1)、创建资源文件
首先创建一个.Rc的纯文本文件。
格式: 资源标识符 关键字 资源文件名

资源标识符:程序中调用资源时的特殊标号;
关键字:标识资源文件类型;
Wave: 资源文件是声音文件;
RCDATA: JPEG文件;
AVI: AVI动画;
ICON: 图标文件;
BITMAP: 位图文件;
CURSOR: 光标文件;
EXEFILE : EXE文件
资源文件名:资源文件的在磁盘上存储的文件全名

例如:
myzjy exefile zjy.exe

2)、编译资源文件
在DELPHI的安装目录的\Bin下,使用BRCC32.exe编译资源文件.RC。当然,也可以将BRCC32单独拷贝到程序文档目录使用。
例如:
Brcc32 wnhoo_reg.Rc

3)、资源文件引用

implementation

{$R *.dfm}
{$R wnhoo_reg.Res}

4)、调用资源文件
(1)存取资源文件中的位图(Bitmap)
Image.Picture.Bitmap.Handle :=LoadBitmap(hInstance,''''资源标识符'''');
注:如果位图没有装载成功,程序仍旧执行,但是Image将不再显示图片。你可以根据LoadBitmap函数的返回值判断是否装载成功,如果装载成功返回值是非0,如果装载失败返回值是0。

另外一个存取显示位图的方法如下
Image.Picture.Bitmap.LoadFromResourceName(hInstance,''''资源标识符'''');

(2)存取资源文件中的光标
Screen.Cursors[]是一个光标数组,使用光标文件我们可以将定制的光标加入到这个属性中。因为默认的光标在数组中索引值是0,所以除非想取代默认光标,最好将定制的光标索引值设为1。
Screen.Cursors[1] :=LoadCursor(hInstance,''''资源标识符'''');
Image.Cursor :=1;

(3)存取资源文件中的图标
将图标放在资源文件中,可以实现动态改变应用程序图标。
Application.Icon.Handle := LoadIcon(hInstance,''''资源标识符'''');

(4)存取资源文件中的AVI
Animate.ResName :=''''MyAvi'''' ; //资源标识符号
Animate.Active :=True ;

(5)存取资源文件中的JPEG
把jpeg单元加入到uses单元中。
var
Fjpg : TJpegImage ;
FStream :TResourceStream ;
begin
Fjpg :=TJpegImage.Create ;
//TresourceStream使用
FStream := TResourceStream.Create (Hinstance,''''资源标识符'''',资源类型) ;
FJpg.LoadFromStream (FStream) ;
Image.Picture.Bitmap.Assign (FJpg);

(6)存取资源文件中的Wave
把MMSystem加入uses单元中
PlaySound(pchar(''''mywav''''),Hinstance,Snd_ASync or Snd_Memory or snd_Resource) ;

(四)INI文件操作
(1) INI文件的结构:
;这是关于INI文件的注释部分
[节点]
关键字=值
...
INI文件允许有多个节点,每个节点又允许有多个关键字, “=”后面是该关键字的值(类型有三种:字符串、整型数值和布尔值。其中字符串存贮在INI文件中时没有引号,布尔真值用1表示,布尔假值用0表示)。注释以分号“;”开头。

(2) INI文件的操作
1、 在Interface的Uses节增加IniFiles;
2、 在Var变量定义部分增加一行:inifile:Tinifile;然后,就可以对变量myinifile进行创建、打开、读取、写入等操作了。
3、 打开INI文件:inifile:=Tinifile.create(''''tmp.ini'''');
4、 读取关键字的值:
a:=inifile.Readstring(''''节点'''',''''关键字'''',缺省值);// string类型
b:=inifile.Readinteger(''''节点'''',''''关键字'''',缺省值);// integer类型
c:=inifile.Readbool(''''节点'''',''''关键字'''',缺省值);// boolean类型
其中[缺省值]为该INI文件不存在该关键字时返回的缺省值。
5、 写入INI文件:
inifile.writestring(''''节点'''',''''关键字'''',变量或字符串值);
inifile.writeinteger(''''节点'''',''''关键字'''',变量或整型值);
inifile.writebool(''''节点'''',''''关键字'''',变量或True或False);
当这个INI文件的节点不存在时,上面的语句还会自动创建该INI文件。
6、 删除关键字:
inifile.DeleteKey(''''节点'''',''''关键字'''');//关键字删除
inifile.EraseSection(''''节点'''');// 节点删除
7、 节点操作:
inifile.readsection(''''节点'''',TStrings变量);//可将指定小节中的所有关键字名读取至一个字符串列表变量中;
inifile.readsections(TStrings变量);//可将INI文件中所有小节名读取至一个字符串列表变量中去。
inifile.readsectionvalues(''''节点'''',TStrings变量);//可将INI文件中指定小节的所有行(包括关键字、=、值)读取至一个字符串列表变量中去。
8、 释放:inifile.distory;或inifile.free;

(五)文件关联
uses
registry, shlobj;
//实现关联注册
procedure Tmyzip.regzzz;
var
reg: TRegistry;
begin
reg := TRegistry.Create;

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!