在DELPHI中*.wav 文件怎么加到资源文件中
比较“流行”的说法是:“16位的Delphi 1.0和32位的Delphi2.0、3.0都提供了资源
编译工具,其中 Delphi 1.0的资源编译器叫BRCC.EXE,Delphi 2.0的资源编译器
叫BRCC32.EXE 用来编译32位资源,所有资源编译器都只提供了命令行版本,
没有提供Windows 版本。制作一个资源一般要通过以下几个步骤:
1)编写.RC文件
..RC文件是资源的源文件,编译器也就编译这个文件,生成.RES的
资源文件
首先在我们的项目子目录中建立一个纯文本文件,起名叫
Sound.rc,文件中
有一行,内容为:
SOUND1 WAV SOUND.WAV
其中SOUND.WAV为一个Windows下普通的声音文件
2)编译它
在DOS的提示符下打 BRCC SOUND.RC 硬盘哗啦啦转一会儿后,就编
译完了
3)制作程序
这也是最复杂,最灵活的一步,首先启动Windows, 再启动Delphi,
并且将项目
中的文件保存到我们的项目中的子目录中。 在Unit1.pas中找这么
一行
{$R *.DFM}
把我们的资源文件就声明在后面
{$R SOUND.RES}
然后,在Form1中声明两个全局变量
PtrSound : PChar;
hRes : THandle; {handle to the loaded resource
if 0 indicates nothing playing}
再在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;
这时候就可以运行了。”
是真的吗?
其实,资源文件的文件名就根本不能和WAVE文件的一样,否则,呵呵,扬声器就要BEEP啦,不信你试试看。
下面笔者写出可以运行源代码的步骤(当然您的资源文件不能有错的):
1)编写.RC文件
..RC文件是资源的源文件,编译器也就编译这个文件,生成.RES的资源文件 首先在我们的项目子目录中建立一个纯文本文件,起名叫
pad.rc ,在文件中写一行,内容为://注意!资源文件名不可以和WAVE文件名一样的!
SOUND1 WAV SOUND.WAV
其中SOUND.WAV为一个Windows下普通的声音文件
2)编译它
在DOS的提示符下打 BRCC32 PAD.RC 一会儿后,就编译完了 //现在已是brcc32啦,不知有的文章怎么还有BRCC??
3)制作程序
在WINDOWS下启动DELPHI,新建一个项目,将其中的文件保存到我们的项目中的子目录中。 在Unit1.pas中找到
{$R *.DFM}
把我们的资源文件就声明在后面
{$R PAD.RES}
然后,在Form1中声明两个全局变量
PtrSound : PChar;
hRes : THandle; {handle to the loaded resource
if 0 indicates nothing playing}
再在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;
点击编译,运行,再按BUTTON1,可以听到扬声器中发出WAVE文件内容。
http://www.cnblogs.com/dashan9zj/archive/2009/01/16/1377181.html
在DELPHI中*.wav 文件怎么加到资源文件中的更多相关文章
- 重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作
原文:重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作 [源码下载 ...
- 如何把Windows主机中的文件拉到centOS虚拟机中
如何把Windows主机中的文件拉到centOS虚拟机中 2017年02月19日 22:19:12 Ariel_lin2017 阅读数:6023 标签: vmware tools共享文件 之前写了 ...
- vue项目中主要文件的加载顺序(index.html、App.vue、main.js)
先后顺序: index.html > App.vue的export外的js代码 > main.js > App.vue的export里面的js代码 > Index.vue的ex ...
- django 中静态文件项目加载问题
问题描述: django项目中创建了多个app后,每个app中都有对应的static静态文件.整个项目运行时这些静态文件的加载就是一个问题,因为整个项目我只参与了一部分,项目部署之类的并没有参与.我写 ...
- Java之——Web项目中DLL文件动态加载方法
本文转自:https://blog.csdn.net/l1028386804/article/details/53903557 在Java Web项目中,我们经常会用到通过JNI调用dll动态库文件来 ...
- as3中xml文件的加载和读取
---恢复内容开始--- as代码如下: xml如下: 总结: 用URLReuqest对象加载xml的url 创建一个URLLoader对象,将1中的URLRequest指定给他 给URLLoader ...
- vue项目中主要文件的加载顺序(index.html、main.js、App.vue)
todo: https://www.cnblogs.com/xifengxiaoma/p/9493544.html https://www.cnblogs.com/stella1024/p/10563 ...
- Android的学习之路(四)项目中清单文件的学习和android中经常使用的显示单位
1.所谓的清单文件就是项目中的AndroidManifest.xml文件.这个文件但是有大用处的.比方:app的名字,图标.app支持的版本号app的包名等等.以下我就介绍下这个清单文件的各个參数的作 ...
- matlab 读多个文件夹(有名字规律)中的文件名字保存到txt中
save_file_name='C:\Users\cong\Desktop\研一实战\项目\图像中时间数字识别\OCR\result6\'; :: image_path=strcat('C:\User ...
随机推荐
- Tokumx vs Mongodb
Mongodb是一个文档型nosql数据库 採用C++编写 Mongo DB最大的优势在于全部的数据持久操作都无需开发者手动编写SQL语句,直接调用方法就能够轻松的实现CRUD操作. 非常多人觉得mo ...
- 基于 OAuth 安全协议的 Java 应用编程
OAuth 简介 OAuth 是由 Blaine Cook.Chris Messina.Larry Halff 及 David Recordon 共同发起的,目的在于为 API 访问授权提供一个安全. ...
- html5和html的区别是什么(精问)
html5和html的区别是什么(精问) 一.总结 一句话总结:html5:简洁(文档生命,链接引入) 语义化(语义化标签) API(canvas,地理位置等) 一些标签(input新类型) 二. ...
- XMPP之ios即时通讯客户端开发-创建工程添加XMPPFramework及其他框架(三)
XMPPFramework GitHub: https://github.com/robbiehanson/XMPPFramework 获取源代码 git clone https://github.c ...
- 【bzoj2809】派遣 (左偏树)
传送门 题目分析 每个节点都是一颗(大根堆)左偏树,先按bfs序存入数组,然后倒着从底层开始:如果当前节点的子树sum > m 那么就把根节点删去,然后统计更新答案,并将这棵树和父节点合并. c ...
- 【t006】三角形分形描绘问题
Time Limit: 1 second Memory Limit: 50 MB [问题描述] 分形是以多种概念和方法相互冲击融合为特征的图形.分形所呈现的无穷玄机和美感引发人们去探索.分形使人们觉悟 ...
- 在C++ Builder6上使用Boost正则表达式库
本文关键词:正则表达式 c++ python 软件 正则表达式是一种模式匹配形式,它通常用在处理的文本程序中.比如我们经常使用的grep工具,还是perl语言都使用了正则表达式. 正则表达式是一种模式 ...
- 动态备份SQL-SERVER数据库——SQLDMO
转载:http://www.cnblogs.com/liulanglang/archive/2007/12/04/981812.html 上周要写一个SQL-SERVER数据库备份还原的程序,很没有思 ...
- java8中的localdate和localtime用法举例
java8中的localdate和localtime用法举例如下:这两个方法使我们可以方便的实现将旧的日期类转换为新的日期类,具体思路都是通过Instant当中介,然后通过Instant来创建Loca ...
- CMake 添加头文件目录,链接动态、静态库(添加子文件夹)
CMake支持大写.小写.混合大小写的命令. 当编译一个需要第三方库的项目时,需要知道: 去哪找头文件(.h),-I(GCC) INCLUDE_DIRECTORIES() 去哪找库文件(.so/.dl ...