如何获取Delphi资源字符串的字符串表资源ID?
发布时间:2020-12-15 04:32:08 所属栏目:大数据 来源:网络整理
导读:在Delphi中,您可以声明要存储在模块资源部分的String Table中的字符串. resourcestring rsExample = 'Example'; 在编译时,Delphi将为其分配一个ID并将其存储在String表中. 有没有办法检索声明为resourcestring的字符串的ID? 原因是我使用的包与gnugettext一
在Delphi中,您可以声明要存储在模块资源部分的String Table中的字符串.
resourcestring rsExample = 'Example'; 在编译时,Delphi将为其分配一个ID并将其存储在String表中. 有没有办法检索声明为resourcestring的字符串的ID? 原因是我使用的包与gnugettext一样. System.pas中的某些函数(如LoadResString)被挂钩,因此当我在表达式中使用resourcestring时,它将被替换为不同的字符串(转换).当然,这非常方便,但有时我需要资源字符串的原始(未翻译)文本. 当我能够检索字符串的资源ID时,我可以调用LoadString API来获取原始文本,而不是翻译文本. 解决方法
要获取resourcestring的资源ID,可以将字符串的地址强制转换为
PResStringRec 类型,然后访问Identifier值.
试试这个样本 {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils; resourcestring rsExample = 'Example'; begin try Writeln(rsExample); Writeln(PResStringRec(@rsExample)^.Identifier); except on E: Exception do Writeln(E.ClassName,': ',E.Message); end; readln; end. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |