delphi文件打包方式(将多个文件编译到一个单元中)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi文件打包方式(将多个文件编译到一个单元中)相关的知识,希望对你有一定的参考价值。

delphi文件打包方式
 在Delphi项目中,通常有一个和项目名称主文件名相同的.RES文件,该文件用于保存应用程式图标等资源,对应于此文件,在项目文件中一定含有编译指示“{$R *.res}”,告诉编译器编译时需要包含和项目主文件名相同的.RES文件。同样,如果需要在应用程式中以资源形式包含所有文件类型,也能利用.RES文件。本文将告诉你怎么利用RES文件在Delphi程式内部包含文件。

 

一创建.RES文件

这里以一组音频文件为例。首先用记事本等所有文本编辑器编写文件“MyMusic.RC”。文件的格式及内容如下:

 

SRC1 FILE1 OnlyYou.mp3
SRC2 FILE2 YesterdayOnceMore.mp3
SRC3 FILE3 MoonRiver.mp3

 

其中,每一行表示声明一项资源,每一项资源的声明包含三个参数定义,第一个参数是资源的名称,第二个参数是资源的类型描述(本例定义了三类),第三个参数是文件名。参数之间必须由空格隔开。

编写完成“MyMusic.RC”文件后,将其和上述三个.MP3文件放置在同一目录中(为了避免由设置路径带来的麻烦)。然后以下面的命令行运行应用程式brcc32.exe(位于..\Delphi6\Bin):brcc32 mymusic.rc需要注意的是,该命令只能在命令行方式下执行。如果系统的PATH环境变量中不包含Delphi的运行路径,那么你还需要将brcc32.exe和MyMusic.RC、三个.MP3文件放置在同一路径中进行。运行上述命令行后,将在同一路径中得到文件“MyMusic.RES”,这就是个独立完整的资源文件,其格式是遵循视窗系统 标准的,因此能在诸如VB、VC、CBuilder等多种研发环境中使用。

 

二在程式中声明包含.RES文件

你只需要在项目中的某个单元中(最佳是你需要利用这些资源的单元,这样会使你的应用程式更具有可读性)加入如下编译指示:$R MyMusic.RES}{

 

尽管该编译指示能位于单元的所有位置,但为了使你的原始码结构合理,最佳还是将其并列位于编译指示“{$R *.dfm}”(每个含有窗体文件的单元中都含有该行编译指示)。这里的编译指示就明确告诉编译器,在编译应用程式时需要将资源文件“MyMusic.RES”包含到应用程式中。

 

三在运行时获取资源

上述两步工作仅仅是基础(但一定是必要的),利用资源才是根本目的。下面的过程将告诉你怎么将应用程式中包含的资源(文件)重新还原。

procedure MusicResToFile(const ResName, ResType,FileName: string);varRes: TResourceStream;beginRes := TResourceStream.Create(HInstance,ResName, PChar(ResType));Res.SaveToFile(FileName); //将资源保存为文件,即还原文件//你还能进行其他的流操作,在内存中实现对资源利用而不必另存为文件Res.Free;end;

 

调用该过程的示例如:MusicResToFile(’SRC2’, ’FILE2’, ’TheSecondMusic.MP3’);

值得一提的是,利用此方法,你完万能制作自己的安装程式,该安装程式仅包含一个可执行文件,在该可执行文件中以资源的形式包含所有将要安装的内容(文件)。此外,如果在你的应用程式中需要播放外部音频文件(如背景音乐、声音提示等),也可通过此方法将这些外部文件包含到应用程式中,从而避免用户误删这些音频文件导致应用程式的不完整。

以上是关于delphi文件打包方式(将多个文件编译到一个单元中)的主要内容,如果未能解决你的问题,请参考以下文章

DELPHI怎么打包成EXE文件的?

DELPHI怎么打包成EXE文件的?

Delphi 区域编译器指令 - 向后兼容的单元文件?

请问Delphi 7.0开发的程序如何打包?

Delphi 移动开发,如何将文件打包到程序中

DELPHI怎么打包成EXE文件的?