2

我需要一个白痴指南,了解如何使用 Delphi XE2 的 IMultiLanguage2 接口和 32 位 VCL 应用程序。

到目前为止,我在 RAD Studio 的 include\windows\sdk\idl 文件夹中找到了 MLANG.IDL,并验证了我的操作系统在 SysWOW64 中有 mlang.dll 文件。

我还设法在 MLANG.IDL 上使用 MIDL.exe 创建了一个 MLANG.TLB 文件(我需要这一步吗?)但我无法将 TLB 导入 XE2,因为它没有出现在“已注册”列表中。我也不想尝试注册它,因为我不想创建对 mlang.dll 以外的依赖项。TLibImp 不会打开 mlang.dll。

我查看了 GenTLB(它不打开 MLANG.IDL)并阅读了很多关于使用类型库的 EMB Docwiki,包括“RAD Studio 上的类型库使用 RIDL 而不是 IDL”的声明。那么 XE2 安装的 IDL 文件的巨大文件夹的目的是什么?由于它们位于包含文件夹中,它们是否仅用于 C++ 而不是用于 Delphi?

4

1 回答 1

4

如果您已经拥有二进制.tlb格式的类型库,那么您可以通过单击“导入组件”对话框中的“添加”按钮来导入它——这将让您浏览 .tlb 文件,并且应该生成一个带有声明的 Delphi 单元。

或者,您可以使用tlibimp命令行工具,例如:

tlibimp -P mlang.tlb

一个快速使用示例:

uses
  MultiLanguage_TLB;

var
  M: IMultiLanguage2;
  C: Cardinal;
begin
  M := CreateComObject(CLASS_CMultiLanguage) as IMultiLanguage2;
  OleCheck(M.GetNumberOfCodePageInfo(C));
  ShowMessage(Format('GetNumberOfCodePageInfo: %d', [C]));
end;
于 2012-06-21T13:20:18.420 回答