我有一个.RC文件,它包含在项目中并编译到res文件中。我想要做的是访问与“CompanyName”相关联的值。有没有办法参考它?例如
之类的东西string st = VERSIONINFO["CompanyName"]
或者我完全误解了吗?
我想作为一个后续内容,字符串表的正确格式是什么?
答案 0 :(得分:4)
要从程序的字符串表资源加载字符串,请使用Delphi的LoadStr
函数。将它传递给您想要阅读的字符串的数字ID。它是Windows LoadString
API函数的包装器。
Delphi原生支持资源字符串。使用const
而不是声明resourcestring
,字符串将自动包含在编译器生成的字符串表中。您可以在代码中通过其命名标识符引用字符串,运行时库将处理从程序资源加载它的详细信息。然后你不必打电话给LoadStr
或其他任何东西。您可以在构建生成的文件中声明一堆资源字符串,因此它始终是最新的。例如:
// Auto-generated; do not edit
unit Resources;
interface
resourcestring
CompanyName = '***';
implementation
end.
如果您想自己管理字符串表,请参阅the MSDN documentation。例如:
#define IDS_COMPANYNAME 1
STRINGTABLE
BEGIN
IDS_COMPANYNAME, "***"
END
要在你的程序中阅读:
const
IDS_COMPANYNAME = 1;
var
CompanyName: string;
CompanyName := LoadStr(IDS_COMPANYNAME);
答案 1 :(得分:1)
procedure TForm1.Button1Click(Sender: TObject);
var
ResHandle:HRSRC;
hGlob:THandle;
thestring:AnsiString;
eu:PAnsiChar;
begin
ResHandle:=FindResource(hInstance,'CompanyName',RT_STRING);
hglob:=LoadResource(hInstance,ResHandle);
eu:=LockResource(hGlob);
theString:=eu;
ShowMessage(thestring);
end;
如果不起作用,则将AnsiString修改为String;)不包括错误检查
答案 2 :(得分:1)
这看起来像版本信息资源,对吗?然后使用GetFileVersionInfo API来阅读它。谷歌出现的前两个Delphi示例: