在从资源DLL加载时,是否可以在Delphi中更改资源字符串?

时间:2012-09-02 16:42:40

标签: delphi resources

我有一个带有本地化资源DLL的Delphi应用程序。

我希望在从DLL加载资源字符串后进行搜索并替换它。

是否有任何内部程序可以执行此操作?

我需要一种方法来搜索和替换任何加载的资源字符串,而不仅仅是更改特定的资源字符串。

拉​​乌尔。

1 个答案:

答案 0 :(得分:5)

是的,你必须挂钩在System.pas中定义的LoadResString()过程。

例如,请参阅http://synopse.info/fossil/finfo?name=SQLite3/SQLite3i18n.pas

中的操作方式

此单位代码中包含所有内容:

  • 用于提取所有资源字符串(但您也可以使用“详细地图”选项编译可执行文件以获取相同的列表);
  • 用于动态替换所有资源字符串,使用您期望的语言;
  • 用于缓存所有资源字符串,因为默认的LoadResString API可能很慢。

您也有类似的代码,但这是我们的开源mORMot框架中包含的代码,从Delphi 6到XE2。还有一些代码可以在同一翻译文本文件中动态更改所有.dfm内容(即您的表单)。在http://mormot.net

的框架文档中有一章介绍了这一点

我想你会得到你的任务所需的每个代码模式。