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

Rao*_*ulw 2 delphi resources

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

我想在从DLL加载资源字符串后进行搜索和替换.

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

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

拉乌尔.

Arn*_*hez 5

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

例如,请参阅http://synopse.info/fossil/finfo?name=SQLite3/SQLite3i18n.pas中的操作方法

这个单位代码中有所有内容:

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

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

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