主题:[讨论]求助!如何把文件变成资源编译到可执行文件里去?
さくら——SAKURA
[专家分:80] 发布于 2008-04-28 13:07:00
每次写一些带音乐的程序,都要附带一些音乐文件,万一被使用者不小心删除,就会出问题,所以我想问下,怎么把这些音乐文件变成资源文件(如:*.mp3,*.wav)编译到可执行文件里去?
希望各位大牛帮帮忙,教下,谢谢
回复列表 (共2个回复)
沙发
2ccc_fans [专家分:260] 发布于 2008-05-04 06:43:00
每个含有窗体的Delphi单元都有{$R *.dfm}这段代码,$R是将外部资源文件编译进可执行文件的意思。。如果在单元文件中添加其他资源,同样也能够被编译到EXE文件中。Delphi支持*.res资源文件,这种资源文件是在之前通过其他程序编译的,Delphi提供了一个编辑资源文件的程序,在Delphi安装目录的BIN文件夹下有一个brcc32.exe文件,该文件就可以编辑资源文件。用该程序编辑的资源文件能够在Delphi中直接引用。工程编译后资源就包含在EXE文件中了。
具体按以下步骤:
(1)新建一个文件,命名为 Sound.rc 。
(2)编辑文件内容为 Sound WAV *.wav 。其中*.wav为要添加到EXE文件中的声音文件,必须是wav格式。
(3)在命令提示符下执行 brcc32 Sound.rc 命令。完成之后生成一个 Sound.res 文件。该文件就是编译成功的资源文件了。
实现过程:
private 下声明:
PtrSound:PChar;
Sound_hRes:THandle;
implementation下声明资源文件,添加 {$R Sound.res}
以下是调用的代码:
procedure TForm1.FormCreate(Sender:TObject);
var Soundinfo: THandle;
begin
Soundinfo:=FindResource(HInstance,'sound','wav');//查找到指定的名称和格式
Sound_hRes:=LoadResource(HInstance,SoundInfo);//调入资源信息
if Sound_hRes>32 then Ptrsound:=LockResource(Sound_hRes);//锁定资源
end;
procedure TForm1.button1Click(Sender:TObject);
begin
sndplaysound(ptrSound,snd_async or snd_Memory);//播放指定声音
end;
板凳
さくら——SAKURA [专家分:80] 发布于 2008-05-04 19:44:00
太好了,谢谢!!!!
我来回复