回 帖 发 新 帖 刷新版面

主题:[讨论]求助!如何把文件变成资源编译到可执行文件里去?

每次写一些带音乐的程序,都要附带一些音乐文件,万一被使用者不小心删除,就会出问题,所以我想问下,怎么把这些音乐文件变成资源文件(如:*.mp3,*.wav)编译到可执行文件里去?
希望各位大牛帮帮忙,教下,谢谢

回复列表 (共2个回复)

沙发

每个含有窗体的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;

板凳

太好了,谢谢!!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册