扩展名     英文解释                     文件内容HWez
BPG        Borland Project Group        工程项目包, 多个工程文件DPR的集合ja
DPR        Delphi Project               应用系统的工程文件&-kyJ
PAS        Pascal File                  单元文件,存放Pascal源代码%N[4+
DFM        Delphi form File             窗体界面文件, 同PAS文件同名,而且一一对应, 定义了窗体属性和构件的属性Bt"rl5
DOF        Delphi Option File           选项文件, 包括编译信息等, 是一个文本文件件,可以看看%Xu[r2
CFG        Project Configuration File   编译器可读的配置文件1D1Y
DSK        Desktop Setting File         保存工程文件的桌面摆布情况, 下次打开时可以恢复上次保存的桌面状态S?K
DSM                                     集成开发环境IDE的临时保存文件, 有时IDE总出错, 可以将这个文件删掉, 系统会重新生成l)dO
RES        Resource File                Windows 的资源文件, 可以定义光标, 位图, 图标资源, 可以使用ImageEditor编辑T
DCU        Delphi Compile Unit          编译后的单元文件, 程序连接时需要它,{
DLL        Dymanic-link libraries       Windows 动态链接库\~
EXE        Executable File              编译生成的可执行文件:bm!A@
DPK        Delphi Packge Source         包文件的源代码K(i
BPL        Borland Package library      包, 是一种特殊的DLL文件, 用于代码重用和减少可执行文件的长度

TGifImage类可以轻松的操作gif文件,不仅能动态显示,也可以分成不同的帧,设置透明度,设置播放速度等等。

uses Gifimage;
var  FGif :TGIFImage;
try
      FResStream := TResourceStream.Create(HInstance, 'LoadingGif', 'GIFTYPE');
      if not assigned(FGif) then
            FGif := TGifimage.Create;
      FGif.LoadFromStream(FResStream);
//上面是放在资源文件中的加载方法,如果直接加载文件,请这样FGif.LoadFromFile('d:\abc.gif');
      FGif.Paint(imgGif.Canvas,imgGif.ClientRect,[goTransparent,goDither,goAsync,goLoop,goAnimate,goDirectDraw]);

    finally
      FResStream.Free;
      if assigned(FGif) then
       FGif.PaintStop;
      FGif.Destroy;
    end

下载:gifimaged6

很恶心的问题,安装了delphi6 D6_upd2_ent.exe升级包后,原来的程序编译报出这样的错误。
原因是因为delphi补丁没有实现Consts.dcu和consts.pas的同步更新。
解决办法:
查找delphi6安装目录下的Consts.dcu,ExtActns.dcu文件,并删除,
打开delphi,打开你的程序,并找到Consts.pas中添加常量:SUrlMonDllMissing= ‘Unable to load %s’;
位置如下:

unit Consts;

interface

resourcestring
  SUrlMonDllMissing= 'Unable to load %s';
  SOpenFileTitle = '打开';

一.编写 RC 脚本文本

用记事本或其它文本编辑器编写一个扩展名为“.rc”的文件。格式如下:

  •   AVI 无声动画
  •   BITMAP 位图文件
  •   CURSOR 光标文件
  •   ICON 图标文件
  •   WAVE 声音文件

RC脚本编写格式如下

    mycur cursor move.cur //加入光标
  mypic Bitmap Water.BMP //加入位图
  mywav WAVE happy.wav //加入声音
  myAVI AVI EPOEN.AVI //加入视频
  myIco ICON CJT.ICO //加入图标

以上所列均为标准资源类型,也可以给资源自定义一个类型,如:“GIFTYPE”。不过两者在调用方式上有些不同。

二.根据 RC 脚本文件编译成 RES 资源文件

在命令提示符中输入以下内容:
brcc32 FileName.rc //注:brcc32.exe在DelphiX\Bin目录中,一般Delphi会添加到环境变量中,所以直接执行brcc32命令就可以了,之后会生成一个FileName.RES的文件。

三.在Delphi单元中加入资源文件

将生成的 RES 资源文件复制到相应程序所在的目录中,在单元文件中的“{$R *DFM}”后面加上“{$R FileName.res}”,编译后资源文件就被包含在可执行文件中了。
说明:如果嫌2、3两步麻烦,可以采用更简便的做法,即:将 RC 文件直接添加到项目中,在编译Delphi项目时,会自动编译该资源文件。
如下图:

四.资源文件调用示例

(1)存取资源文件中的位图
低版本的delphi支持的位图色可能不一样,delphi6不能支持256色以上的位图。

//RC: testBmp bitmap res\test.bmp
Image1.Picture.Bitmap.LoadFromResourceName(HInstance, 'testBmp');
//RC: testBmp bmptype res\test.bmp
//此方法支持自定义格式
var
resStream: TResourceStream;
begin
resStream := TResourceStream.Create(HInstance, 'testBmp', 'bmptype');
Image1.Picture.Bitmap.LoadFromStream(resStream);
resStream.Free;
end;
(2)存取资源文件中的图标
将图标放在资源文件中,可以实现动态改变应用程序的图标。

//RC: testIcon icon res\test.ico
Application.Icon.Handle := LoadIcon(HInstance, 'testIcon');
(3)存取资源文件中的AVI动画
//RC: testAvi avi res\test.avi
Animate1.ResName := 'testAvi';
Animate1.Active := True;
(4)存取资源文件中的JPEG图像
为了能够处理JPEG图像,必须在Interface处引用JPEG单元。

var
jpg: TJPEGImage;
resStream: TResourceStream;
begin
jpg := TJPEGImage.Create;
resStream := TResourceStream.Create(HInstance, 'testJpg', 'jpgtype');
jpg.LoadFromStream(resStream);
Image1.Picture.Assign(jpg);
jpg.Free;
resStream.Free;
end;
(5)光标的调用
首先在程序中定义一个值大于0的常量,因为Delphi本身用0-负16来索引默认的光标,所以我们制定的光标应从表面上1开始索引。然后在窗口的Oncreat事件中添加以下代码:

screen.cursor[35]:=Loadcursor (hinstance,'mycur');

其中35为大于1的常量,mycur为光标在资源文件中的名字。如果希望在其他控件上使用定制光标,例如Panel控件,只需在程序的适当处加入以下代码:

Panel1.cursor:=35;
(6)调用WAV文件
在uses中加入mmsystm单元,以便在程序中播放WAV文件。播放时

Playsound(pchar('mywav'),hinstance,sndsync or snd_resource);

其中mywav为声音文件在资源中的名称。

资源类型除上述类型外,还可以字体文件,字符串文件等。

在控制台下使用资源文件

新建一工程,将唯一的一个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('演示结束!');

使用Image Editor工具

Delphi本身自带了一个叫Image Editor的工具,同样可以编辑资源文本,但和本文的方法比较,可得出下表:

Image Editor Brcc32
BMP 只支持16位色 任意色
光标 黑白两色 任意色
ICO 只支持16位色 任意色
AVI 不支持 支持
WAV 不支持 支持
字符串 不支持 支持

上面说的是直接在程序本身的调用。其实资源文件还有其它用法。比如说在你的程序携带其它文件,要用的时候释放出来。
例如:

myexe exefile 'ha1.exe'//脚本文件

下面是自定义释放函数ExtractRes,本例中使用如下:

ExtractRes('exefile','myexe','c:\new.exe');

就把ha1.exe以new.exe为名字保存到C盘根目录下了.

function TForm1.ExtractRes(ResType, ResName, ResNewName: string): boolean;
var
Res: TResourceStream;
begin
try
Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
try
Res.SavetoFile(ResNewName);
Result := true;
finally
Res.Free;
end;
except
Result := false;
end;
end;