2

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

从 DLL 加载资源字符串后,我想对其进行搜索和替换。

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

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

拉乌尔。

4

1 回答 1

5

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

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

本单元代码中包含所有内容:

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

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

我认为您将在这里获得您的任务所需的所有代码模式。

于 2012-09-02T16:53:04.670 回答