资源文件的编译

       通常在Delphi的应用程序中,我们会调用到很多的资源,例如图片,动画(AVI),声音,甚至于别的执行文件。当然,把这些资源分布到不同的目录不失为一个好办法,但是有没有可能把这些资源编译成标准的windows资源从而链接到一个执行文件里面呢?     
   
       我们可以自己做一个RC文件,例如   sample.rc   ,RC文件其实就是一个资源文件的描述文本,通过“记事本”程序创建就行了。然后可以输入一些我们要定义的资源,例如:  
   
  MEN   BITMAP   c:\bitmap\men.bitmap  
  ARJ   EXEFILE   c:\arj.exe  
  MOV   AVI   c:\mov.avi   

  其中 BITMAP 、EXEFILE、AVI 可是自己定义名称
    
  然后用BRCC32把这个RC文件编译成sample.res(真正的资源文件)。brcc32.exe   只编译,brc32.exe不但编译,也可与exe文件连接   
    
  在Delphi的工程文件中使用   $R   编译指令让Delphi包括资源到EXE文件里面。  
   
  {$R   sample.res}  
   
  这样我们就可以在这个单一的执行文件中调用资源了。举例如下:  
   
  EXEFILE:  
   
  procedure   ExtractRes(ResType,   ResName,   ResNewName   :   String);  
  var    
  Res   :   TResourceStream;    
  begin  
  Res   :=   TResourceStream.Create(Hinstance,   Resname,   Pchar(ResType));   Res.SavetoFile(ResNewName);  
  Res.Free;    
  end;   


    
  AVI:  
   
  procedure   LoadAVI;  
  begin  
  {Avi1是一个TAnimate类}  
  Avi1.ResName:='AVI';  
  Avi1.Active:=True;  
  end;     
     
  加载JPEG图片文件时需要用以下的方法实现:别忘了加Jpeg单元哟
var
    Stream : TResourceStream;
    DLLHandle: THandle;
    Jpg:TJpegimage;
begin
   DLLHandle := LoadLibrary('dlls/Res.dll'); 
    try
        Jpg := TJPEGImage.Create;
        Stream := TResourceStream.Create(DLLHandle, 'Mainimg', 'JPEG');
        Jpg.LoadFromStream(Stream);
        img1.Picture.Assign(Jpg);
    finally
        FreeLibrary(DLLHandle);
        Stream.Free;
        Jpg.Free;
    end;
end;

转载于:https://www.cnblogs.com/sonicit/archive/2007/06/17/786135.html

在 C 语言中,可以将源文件编译进可执行程序中,以便在程序运行时访问这些源。 以下是一种常见的方法: 1. 将源文件添加到项目中,例如将图片、音频等文件放在项目的特定目录下。 2. 在代码中使用相应的 API 将源文件读取到内存中,例如使用 fopen()、fread()、fclose() 函数读取文件内容。 3. 将读取到的源文件内容存储在程序的数组中,例如使用 char 数组保存文本文件内容,使用 unsigned char 数组保存二进制文件内容。 4. 在编译时,将源文件的数组声明为 static const 类型,并加上 const 关键字,这样可以确保数组内容不会被修改。 5. 在代码中使用数组名访问源文件内容,例如使用 printf() 函数输出文本文件内容,使用 fwrite() 函数写入二进制文件内容。 6. 最后,将程序编译为可执行文件,源文件的内容就会被编译进去,程序运行时可以直接访问这些源。 以下是一个示例代码: ```c #include <stdio.h> static const unsigned char image[] = { /* binary data goes here */ }; int main(void) { printf("Image size: %d bytes\n", sizeof(image)); return 0; } ``` 在这个示例中,将一个二进制文件的内容保存在名为 image 的数组中,在程序中使用 sizeof() 函数获取数组大小,并输出到控制台。在编译时,将该程序编译为可执行文件,二进制文件的内容就会被编译进去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值