问题
I use a list of words in my Delphi program, and until now I would place the list in the Lines property of a TMemo. I don't need the visual component, though, rather a TStringList, so now I want to do things the proper way by using a resource file for this, and load my TStringList from the resource. I tried applying the information from this answer, but I get an error:
[dcc32 Error] E2161 Error: RLINK32: Unsupported 16bit resource in file "D:\etc\Unit1.rc"
For good measure, I have this Unit1.rc file:
RC_keywords RCDATA "keywords.txt"
I created this in Project → Resources and images..., but it looks like this is the same as writing the .rc file yourself.
In my program I have this resource include:
{$R *.rc}
and in my procedure
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;
What's wrong here?
回答1:
As David says, the compiler can not use the .rc
script directly, it must be compiled into a .res
file.
I just created a simple text file, keywords.txt
. Then I created another text file, with the same content as yours, called keywords.rc
, all in the Delphi IDE.
After saving both, I clicked menu Project
-> Add to Project...
and added keywords.rc
to the project. In the .dpr
, the line
{$R 'keywords.res' 'keywords.rc'}
was added and the .res
file created as soon as I compiled the project.
回答2:
You are not compiling the resource script into a compiled resource. You have to compile the script, the .rc file, to a compiled resource, a .res file. Do that using the resource compiler brcc32
. Then link the resource like this
{$R keywords.res}
Or get the compiler to invoke the resource compiler for you
{$R keywords.res keywords.rc}
I'm assuming a resource script name of keywords.rc
which makes more sense to me that Unit1.rc
.
来源:https://stackoverflow.com/questions/24803059/text-resource-wont-compile-into-my-delphi-exe