初级问题(200分)

  • 主题发起人 主题发起人 dnb
  • 开始时间 开始时间
D

dnb

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把某个文件(如:*.wav *.dat等等)编译到EXE文件中去,
以后在用到它时或者直接调用,或者再把它释放出来。怎么办?
最好能举个例子,谢了!
 
tqz的网页上有一个tstore可以!
btw:cool!
 
使用ResouceDLL
 
直接用Notepad编写一个RC文件,
在其中加入
IDW_WAVE1 WAVE "C:/YourDir/YourWave.Wav"
然后用BRCC32进行编译,在把生成的*.RES拷入你的PROJECT目录下的RES目录
在PROJECT文件中加入{$R *.RES}
再进行COMPILE则可
 
如果要编写.RC文件的话,这里有个例子:
首先在我们的项目子目录中建立一个纯文本文件,起名叫Sound.rc,文件中 有一行,内容为:
SOUND1 WAV SOUND.WAV
然后编译它
在DOS的提示符下打 BRCC SOUND.RC
用的时候
在Unit1.pas中找这么一行
{$R *.DFM}
把我们的资源文件就声明在后面
{$R SOUND.RES}
然后,在Form1中声明两个全局变量
PtrSound : PChar;

hRes : THandle;

再在Form1的Create事件中写下如下代码
procedure TForm1.FormCreate(Sender: TObject);

var hResInfo : THandle;

begin

hResInfo := FindResource(HInstance, 'SOUND1', 'WAVE');
hRes := LoadResource(HInstance, hResInfo);
if hRes > 32 then
{its a good load}
begin
{lock the resource}
ptrSound:=LockResource(hRes);

end;

end;


然后在Form1中放一个按钮Button1,写如下代码:
procedure TForm1.Button1Click(Sender: TObject);
begin

sndplaysound(ptrSound,snd_async or snd_Memory);

end;

这时候就可以运行了.
 
使用资源。我有一篇文章,妹给你
 
你们太快了吧!!
我个人认为使用Microsoft Develop Studio做资源文件较为方便。(尽管我讨厌
M$的东西)
 
jghuang举的那个例子我有,可是编译不过去,提示一大堆错误:
[Error] Unit1.pas(42): Undeclared identifier: 'sndplaysound'
[Error] Unit1.pas(42): Undeclared identifier: 'snd_async'
[Error] Unit1.pas(42): Undeclared identifier: 'snd_Memory'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
哪位大虾如能抽空亲自写一小段后学晚辈能看的懂代码,则感激不尽。
 
dnb:
jghuang的例子可以用,但是必须在uses中加上mmsystem。再试试,能行的。
 
sorry,你应该在use中加入mmSystem,然后就能编译了.
 
作资源为什么不用Delphi自带的Image Editor,我觉得挺好用的....
 
我编译成功了,可是按下Button1后,什么也没有发生。:-(
还有我把*.dat编译到EXE文件中去,怎么把它释放到磁盘上。
 
to dnb:
这一行似乎不对:
hResInfo := FindResource(HInstance, 'SOUND1', 'WAVE');

~~~~~
应该是'WAV'吧?
to vc: ImageEditor能把wav做进资源吗?好象只对icon,bitmap,cursor
有效吧.
 
补充一下,存到磁盘上可以这样:
先create一个TResourceStream,然后调用TResourceStream
的SaveToFile方法就可以了.
TResourceStream.Create(Instance: THandle;
const ResName: string;
ResType: PChar);
TResourceStream.SaveToFile(const FileName: string);
 
1、这一行本身是对的,但按照jghuang上面的写法就成错的了,
hResInfo := FindResource(HInstance, 'SOUND1', 'WAVE');
~~~~~
要么改Sound.rc为
SOUND1 WAVE SOUND.WAV
要么改前面的那条语句为
hResInfo := FindResource(HInstance, 'SOUND1', 'WAV');
2、Microsoft Developer Studio是我用过的最强大的资源开发工具了,不但能
处理32位资源,16位资源也能处理,ImageEditor是没法比的。
 
今天只用20多M装了个vc5,选项安装,啥也不要,就是为了这个资源开发工具,呵呵.
这下用起来爽了! :)
 
咳,老了.
老是丢三落四! $-(
>Microsoft Developer Studio是我用过的最强大的资源开发工具了,不但能
处理32位资源,16位资源也能处理,ImageEditor是没法比的。
没办法,M$的东西还是不能少.
 
Hehe... Borland Resource Workshop 比 M$ 的玩艺好. 就算
Symantec Resource Editor 也比 M$ 好.
M$ 不能修改 binary 中的 resource. 操作不变, 又大....笨
 
多人接受答案了。
 
后退
顶部