我在我的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;
这里有什么问题?
答案 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
文件。