从资源(.res)文件加载文本

时间:2012-01-14 10:31:24

标签: delphi delphi-2010

我几天前找到了这个教程,然后我就跟着它了。因为我只对从资源文件中加载文本感兴趣,所以我只使用了与我需要的相关的内容。可以在教程中找到代码here。注意:我使用函数 GetResourceAsPointer GetResourceAsString 中的代码。我有:

  • 创建了包含一个文本文件的资源文件。文本文件包含“test”
  • 包括{$ R resource.res}

注意:我使用备忘录从资源加载字符串。

程序能够编译而没有任何错误,但是当我单击按钮将字符串加载到备忘录中时,会加载一个字符串但不会“测试”。相反,我得到的是随机字符,如正方形和汉字。

有谁知道问题可能是什么?有没有人经历过这个?

先谢谢你,彼得

2 个答案:

答案 0 :(得分:2)

我使用以下两个例程来从添加到EXE的资源中获取文本:一个例程用于ANSI字符串,一个例程用于Unicode字符串。您的随机字符可能是由于阅读的字符多于所需的字符。

Function GetResString (i, lang: integer): string;
var
 buffer: array [0..400] of char;
 ls: integer;

begin
 result:= '';
 ls:= loadstring (hinstance, i + lang * 1000, buffer, sizeof (buffer));
 if ls <> 0 then result:= buffer
end;

function LoadResW (id, lang: integer): WideString;
const
 maxlength = 1024;

var
 ls: integer;

begin;
 setlength (result, maxlength);
 ls:= loadstringw (hinstance, lang * 1000 + id,
 pwidechar (result), length (result));
 if ls > 0
  then setlength (result, ls)
  else result:= ''
end;

答案 1 :(得分:1)

哪种编码是您放入资源的文本文件?如果是ANSI,请尝试将其另存为Unicode(文章使用GetResourceAsString类型中的PChar)。