先用记事本编写一个rc的文件。如内容为:
_Comms RCData Comms.jpg

Comms.jpg为图片名称,
然后在这个rc文件和图片拷贝到delphi安装路径的bin文件夹里面,
选中这两个文件,拉到“brc32.exe”文件上面,就会生产一个res格式的文件出来。
文件名称为跟rc文件的名称一样。


1.创建资源文件 
首先创建一个.Rc的纯文本文件。格式如下: 
资源标识符 + 关键字 + 资源文件名 
(1) 资源标识符:程序中调用资源时的特殊标号; 
(2) 关键字:标识资源文件类型; 
Wave: 资源文件是声音文件; 
RCDATA: JPEG文件; 
AVI: AVI动画; 
ICON: 图标文件; 
BITMAP: 位图文件; 
CURSOR: 光标文件; 
资源文件名:资源文件名; 
(3) 资源文件名:编译的资源文件,比如动画、位图、光标等; 
(4) 如:MyWav WAVE FileName.Wav 
使用Borland资源编译器(BRCC32.EXE)转化.Rc文件成.Res文件。在DOS命令行下输入下列命令: 
Brcc32 FileName.Rc // Brcc32.Exe在Delphi5/Bin文件下。 
2.在工程中引用资源文件 
为了存取我们的资源文件,必须告诉Delphi链接我们的资源文件到应用程序中。因此我们可以在源代码中加入一条编译指令完成上述功能。这条指令必须紧跟在窗口指令后,如下形式: 
{$R *.DFM} file://Delphi自带编译指令 
{$R FileName.Res} file://新加入的编译资源文件的指令。 
不要删除{$R *.DFM}指令,因为这行代码告诉Delphi链接下面的资源到窗口的资源中。 
3.调用资源文件 
(1)存取资源文件中的位图(Bitmap) 
程序中如果想存取资源,你必须调用一些Windows API函数。保存在资源文件中的位图、光标和图标可以通过调用LoadBitmap、LoadCursor和LoadIcon函数存取。 
本例举例说明如何存取资源文件中位图并显示在Timage控件中。 
procedure TfrMain.btnCanvasPic(Sender: TObject); 
Image1.Picture.Bitmap.Handle :=LoadBitmap(hInstance, 资源标识符); 
end; 
注:如果位图没有装载成功,程序仍旧执行,但是Image将不再显示图片。你可以根据LoadBitmap函数的返回值判断是否装载成功,如果装载成功返回值是非0,如果装载失败返回值是0。 
另外一个存取显示位图的方法如下 
procedure TfrMain.btnLoadPicClick(Sender: TObject); 
begin 
Image1.Picture.Bitmap.LoadFromResourceName(hInstance, 资源标识符); 
end; 
(2)存取资源文件中的光标 
Screen.Cursors[]是一个光标数组,使用光标文件我们可以将定制的光标加入到这个属性中。因为默认的光标在数组中索引值是0,所以除非想取代默认光标,最好将定制的光标索引值设为1。 
procedure TfrMain.btnUseCursorClick(Sender: TObject); 
begin 
Screen.Cursors[1] :=LoadCursor(hInstance,资源标识符); 
Image1.Cursor :=1; 
end; 
(3)存取资源文件中的图标 
将图标放在资源文件中,可以实现动态改变应用程序图标。 
procedure TfrMain.LoadIconClick(Sender: TObject); 
begin 
Application.Icon.Handle := LoadIcon(hInstance, 资源标识符); 
End; 
(4)存取资源文件中的AVI 
procedure TfrMain.LoadIconClick(Sender: TObject); 
begin 
Animate1.ResName :=MyAvi ; file://资源标识 
Animate1.Active :=True ; 
End ; 
(5)存取资源文件中的JPEG 
把jpeg单元加入到Interface的uses单元中。 
procedure TForm1.LoadJPGClick(Sender: TObject); 
var 
Fjpg : TJpegImage ; 
FStream :TResourceStream ; 
begin 
Fjpg :=TJpegImage.Create ;  
FStream := TResourceStream.Create (Hinstance,资源标识符,RT_RCDATA) ; 
FJpg.LoadFromStream (FStream) ; 
Image1.Picture.Bitmap.Assign (FJpg); 
end; 
(6)存取资源文件中的Wave 
把MMSystem加入到Interface的uses单元中 
procedure TForm1.LoadWaveClick(Sender: TObject); 
begin 
PlaySound(MyWav, HInstance, Snd_ASync or Snd_Memory or snd_Resource) ; 
end; 
楼主兄弟,希望上面的东东能对你有所帮助。


谈资源文件在Delphi中的应用 
                                 鲸鱼工作室 陈经韬 
                               http://lovejingtao.126.com

资源文件一般为扩展名为res的文件。在VC中资源文件用得非常普遍, 
但Delphi在其联机帮助中对资源文件没作什么介绍,其实利用其自带的 
资源编译工具BRCC32.EXE(一般位于/Delphi/BIN目录下),我们完全可 
以做出跟VC一样效果的文件来。 
 资源文件最大的好处是能将一些在必要时才调用的文件跟可执行文件一 
起编译,生成一个文件.这样做最大的好处就是使外部文件免遭破坏.例如 
在一条程序中你要临时调用一幅图片,一般作法是把图片放在某一路径下 
(通常是主程序所在路径),但如果用户路径误删你的图片文件,则可能 
使程序找不到相应文件而出错崩溃。另外,如果你想自己的程序界面美观, 
想用一些自定义光标,也要用到资源文件。 
资源文件的使用步骤为: 
1.编写rc脚本文本 
用记事本或其它文本编辑器编写一个扩展名为rc的文件。例如: 
mycur cursor move.cur //加入光标 
mypic Bitmap Water.BMP //加入位图 
mywav WAVE happy.wav //加入声音 
myAVI AVI EPOEN.AVI //加入视频 
myIco ICON CJT.ICO //加入图标 
格式分别为在资源文件中的名称->类型->实际文件名称,例如上面 
第一行 定义一个名为mycur的光标,实际名称为加入光标move.cur. 
2.将rc文件编译成res资源文件 
将脚本文件和实际文件拷到Brcc32.EXE所在目录,执行DOS命令。 
格式为:Brcc32 脚本文件(回车),例如有一名为myfirst.rc的脚本文件, 
则执行 Brcc32 myfirst.rc(回车)即可。如果你是懒人,也可新建一批 
处理文件,内容 只有一行:Brcc32 mufist.rc.(因为Delphi安装后一般会 
在自动批处理文件中指明搜索路径的。)如果编译成功,则会生成一个结尾 
为res的文件,这个 文件就是我们需要的资源文件。 
3.在Delphi单元中加入资源文件 
将生成的res资源文件拷贝到你所编程序的路径下,在单元文件 
{$R *DFM}后加上一句{$R mufirst.res},则将res文件加入去,编译后资 
源文件即已包含在可执行文件中了。若你有多个资源文件,也按上法依次 
加入。 
4.在Delphi程序中调用资源文件 
资源文件在Delphi中的关键字为hinstance.下面给出具体用法 
<1>光标的调用 
首先在程序中定义一个值大于0的常量,因为Delphi本身用0-负 
16来索引 默认的光标,所以我们制定的光标应从表面上1开始索引。然后 
在窗口的Oncreat事件中添加以下代码: 
screen.cursor[35]:Load cursor (hinstance,'mycur'); 
其中35为大于1的常量,mycur为光标在资源文件中的名字。如 
果希望在 其他控件上使用定制光标,例如Panel控件,只需在程序的适当 
处加入以下代码: 
Panel1.cursor:=35; 
<2>位图的调用 
新建一项工程,添加一Timage控件,在需要显示的地方写以下代码: 
Var mymap:Hbitmap; 
begin 
hmymap:=LoadBitmap(hinstance,'mypic'); 
Image1.picture.Bitmap.Handle:=mymap; 
end; 
其中"mypic"为位图资源文件中的名称。 
〈3〉AVI文件的调用 
新建一工程,添加一Animate控件,在需要的地方加入: 
animater1.resname:='myAVI'; 
animater1.Active:=true; 
其中myAVI为视频文件在资源文件中的名称。 
〈4〉调用WAV文件 
在uses中加入mmsystm单元,以便在程序中播放WAV文件。播放时Playsound 
(pchar('mywav'),hinstance,sndsync or snd_resource);其中mywav为声音 
文件在资源中的名称。 
〈5〉加入光标 
加入光标比较容易,只要将res文件加入单元文件中即可。但需注意,名称 
最好取"W"."WW"等,使第一个字母尽量靠后,以免与主程序的图标顺序颠倒。 
补充:1.资源类型除上述类型外,还可以字体文件,字符串文件等。 
2.资源文件不但可以在标准图形界面下使用还可在控制台下使用。 
下面我们来试验一下: 
新建一工程,将唯一的一个Form删除,然后修改工程文件。增加一句 
{$Apptype console},在uses子句中加入mmsystem,并将其它引用单元 
删掉。将Begin和end之间语句删掉。至此,我们就可和Turbo PASCAL 
下编程序一样,且还可以调用windows的API和资源。将资源文件---- 
{$R myfist.res}加入。在Begin和end之间写下: 
writeln('演示程序,按任意键开始!'); 
readln; 
playsound(pchar('mywav'),hinstance,snd_sync or snd_resource); 
writeln('演示结束!'); 
运行程序,将弹出一个标准DOS窗口,按任意键播放声音文件。是不是很COOL呢! 
我曾下载过一个播放器,在其安装目录下我发现有一"DOS程序",用鼠标双击它 
便弹出一个DOS窗口,显示DOS时代特有的画图,并有背景音乐!可能就是用这个 
方法做的。

编辑JPG.RC文件 
jpg1 jpeg 1.jpg 
jpg2 jpeg 2.jpg 
用BRCC32 JPG.RC 
在程序中用 
{$r jpg.res} 
var 
JPg:Tresourcestream; 
begin 
jpg:=Tresourcestream.create(hinstance,'jpg1','jpeg'); 
image1.picture.assign(Jpg); 
JPg.free; 
end;

http://blog.csdn.net/zisongjia/article/details/61915116

在Delphi中编辑res文件的更多相关文章

  1. 在Delphi中编写res文件

    delphiimagedosinterfaceborland脚本先用记事本编写一个rc的文件. 如内容为: _Comms RCData Comms.jpg Comms.jpg为图片名称, 然后在这个r ...

  2. eclipse中编辑properties文件无法看到中文

    如果在eclipse中编辑properties文件无法看到中文则参考“Eclipse开发环境配置-indigo.docx”添加propedit插件.

  3. delphi中如何实现文件的复制?

    http://zhidao.baidu.com/link?url=nyAzCpeXAbaT8M3qqAePCF1Zr7q-oK4hpAUNIaRYpHcbmIwYsLr1TXoTt8759HtR1EB ...

  4. delphi中的各种文件类型介绍【转】

    1.DPR: Delphi Project文件,包含了Pascal代码.应用系统的工程文件2.PAS: Pascal文件,Pascal单元的源代码,可以是与窗体有关的单元或是独立的单元.3.DFM:D ...

  5. delphi中的各种文件类型介绍

    1.DPR: Delphi Project文件,包含了Pascal代码.应用系统的工程文件2.PAS: Pascal文件,Pascal单元的源代码,可以是与窗体有关的单元或是独立的单元.3.DFM:D ...

  6. Delphi中编辑word

      其他(28)   //启动Word   try     wordapplication1.connect;   except     messagedlg('word may not be ins ...

  7. 解决Eclipse中编辑xml文件的智能提示问题,最简单的是第二种方法。

    Eclipse for Android xml 文件代码自动提示功能,介绍Eclipse 编辑器中实现xml 文件代码自动智能提示功能,解决eclipse 代码提示失效.eclipse 不能自动提示. ...

  8. [转]解决Eclipse中编辑xml文件的智能提示问题

    转自:http://hi.baidu.com/cghroom/item/48fd2d0dc1fc23c675cd3c3e 摘要:  Eclipse for Android xml 文件代码自动提示功能 ...

  9. 未联网下,在eclipse中编辑xml文件如何自动提示设置

    断网情况下,用eclipse编辑xml文件如何自动提示? 以编辑hibernate中的xml为例: 首先,我们都知道xml提示是引用.dtd文件的. 1.复制这个dtd路径,设置eclipse属性,搜 ...

随机推荐

  1. DownLoadManager[20530:228829] DiskImageCache: Could not resolve the absolute path of the old directory.

    uiwebview 模拟器打开PDF文件时崩溃.报下面错误,还不知道为什么 DownLoadManager[20530:228829] DiskImageCache: Could not resolv ...

  2. Mac修改文件权限:You don’t have permission to save the file

    1.从互联网上或者其他途径拿过来的工程代码,往往会报下面的提示: (1)打开文件的时候出现窗口提示You don’t have permission to save the file “project ...

  3. 检索05 --static静态方法 和 非静态方法

    C#静态变量使用static 修饰符进行声明,在类被实例化时创建,通过类进行访问不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问一个类的所有实例的同一C#静 ...

  4. Vuex的一个易错点

    好长时间不用Vuex,发现有些东西记模糊了. 在对Vuex进行模块化开发的时候, const store = new Vuex.Store({ modules: { a: moduleA, b: mo ...

  5. 利用WPF建立自己的3d gis软件(非axhost方式)(三)矢量数据显示控制

    原文:利用WPF建立自己的3d gis软件(非axhost方式)(三)矢量数据显示控制 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bPew 密 ...

  6. e.target e.currenttarget

    概述 当事件穿过 DOM 时,识别事件的当前目标对象(Identifies the current target for the event, as the event traverses the D ...

  7. 浏览器兼容性之ECMAScript

    1 IE中不能操作TR标签的innnerHTML. 2 日期处理函数不一致. (1)IE 8- new Date().getYear()返回的是到当前日期到1900年的差值,FF返回的是当前的年. ( ...

  8. 1-5设定NetCore监听端口

    问题的起源:启动一个.netCore项目,默认使用的是5000端口,当我们有很多个项目的时候(集群),不可能都使用5000端口. 方法1:set ASPNETCORE_URLS=http://127. ...

  9. ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 Entity Fram ...

  10. 32位与64位、单精度(single-precision)与双精度(double-precision)

    What's the difference between a single precision and double precision floating point operation? 0. 6 ...