文本资源不会编译到我的Delphi exe中

时间:2014-07-17 12:04:48

标签: delphi delphi-xe3

我在我的Delphi程序中使用了一个单词列表,直到现在我将列表放在TMemo的Lines属性中。我不需要可视组件,而是TStringList,所以现在我想通过使用资源文件以正确的方式做事,并从资源加载我的TStringList。我尝试应用this answer中的信息,但收到错误:

  

[dcc32错误] E2161错误:RLINK32:文件“D:\ etc \ Unit1.rc”中不支持的16位资源

为了更好的衡量,我有这个Unit1.rc文件:

RC_keywords RCDATA "keywords.txt"

我在Project→Resources和images ...中创建了这个,但看起来这和你自己编写.rc文件一样。

在我的程序中,我有这个资源包括:

{$R *.rc}

在我的程序中

procedure TForm1.FormCreate(Sender: TObject);
var
  SL: TStringList;
  ResStream: TResourceStream;
begin
  SL := TStringList.Create;
  try
    ResStream := TResourceStream.Create(hInstance, 'RC_keywords', RT_RCDATA);
    SL.LoadFromStream(ResStream);
    //
    // do a lot of useful stuff here
    //
  finally
    SL.Free;
  end;

这里有什么问题?

2 个答案:

答案 0 :(得分:4)

您没有将资源脚本编译为已编译的资源。您必须将脚本(.rc文件)编译为已编译资源,即.res文件。使用资源编译器brcc32执行此操作。然后像这样链接资源

{$R keywords.res}

或让编译器为您调用资源编译器

{$R keywords.res keywords.rc}

我假设资源脚本名称为keywords.rc,这对Unit1.rc更有意义。

答案 1 :(得分:3)

正如David所说,编译器无法直接使用.rc脚本,必须将其编译为.res文件。

我刚创建了一个简单的文本文件keywords.txt。然后我在Delphi IDE中创建了另一个文本文件,其内容与您的内容相同,称为keywords.rc

保存两者后,我点击了菜单Project - > Add to Project...并将keywords.rc添加到项目中。在.dpr中,行

{$R 'keywords.res' 'keywords.rc'}
添加了

,并在编译项目后立即创建了.res文件。