delphi将文件资源打包到exe中

一开始没有集成到exe单文件里的时候我用的笨方法CopyFile(pchar(‘SYSlanhai.dll‘), pchar(‘SYSManage.exe‘), False); //复制文件
这样,有多个文件的时候很不方便,集成到exe里简单、稳定、速度快。

过程:

  1. 创建一个文本文件,然后将资源文件按照如下格式填写:a b demo.DLL (名字随便起中间有空格,demo.DLL这个跟资源名称要对应)然后将文本文件保存为‘文件名.rc‘格式(不会?自己百度吧.我这里保存的是demo.rc)。

  2. 将资源文件demo.DLL与保存的这个demo.rc一起保存到Brcc32.EXE所在目录。(我的是:C:\Program Files (x86)\Embarcadero\Studio\20.0\bin)
    delphi将文件资源打包到exe中

  3. 点开始-运行,输入cd/返回到根目录,然后cd 进入C:\Program Files (x86)\Embarcadero\Studio\20.0\bin 这个路径。运行:“Brcc32.exe demo.rc(回车)”会在其目录生成一个上图标识5的。demo.res的文件。
    delphi将文件资源打包到exe中

  4. 将这个demo.res文件复制到你delphi 工程所在的目录。然后引用资源方法如下:{$R demo.RES}
    delphi将文件资源打包到exe中

附:源码

unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  Vcl.StdCtrls, Vcl.ExtCtrls;

type
  TForm2 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}
{$R demo.RES}
 function ExtractRes(ResName,ResType, 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;
procedure TForm2.FormCreate(Sender: TObject);
begin
  //DeleteFile(‘SYSManage.exe‘);

 // CopyFile(pchar(‘SYSlanhai.dll‘), pchar(‘SYSManage.exe‘), False);    //复制文件
 if  ExtractRes(‘a‘,‘b‘,‘SYSManage.exe‘) then
 ShowMessage(‘注册文件成功‘);

end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
  winexec(‘SYSManage.exe‘, 0);      //运行外部exe
end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
  close;
end;

end.

/```

delphi将文件资源打包到exe中

上一篇:apache window 上的安装


下一篇:C# tcp