我几天前找到了这个教程,然后我就跟着它了。因为我只对从资源文件中加载文本感兴趣,所以我只使用了与我需要的相关的内容。可以在教程中找到代码here。注意:我使用函数 GetResourceAsPointer 和 GetResourceAsString 中的代码。我有:
注意:我使用备忘录从资源加载字符串。
程序能够编译而没有任何错误,但是当我单击按钮将字符串加载到备忘录中时,会加载一个字符串但不会“测试”。相反,我得到的是随机字符,如正方形和汉字。
有谁知道问题可能是什么?有没有人经历过这个?
先谢谢你,彼得
答案 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
)。