2012-06-21 87 views
2

我需要一個關於如何使用Delphi XE2的IMultiLanguage2接口和32位VCL應用程序的白癡指南。如何在Delphi XE2中使用IMultiLanguage2?

到目前爲止,我已經發現RAD Studio中的MLANG.IDL包含\ windows \ sdk \ idl文件夾,並且驗證了我的操作系統在SysWOW64中有mlang.dll文件。

我也設法使用MLANG.IDL上的MIDL.exe創建一個MLANG.TLB文件(我是否需要這一步?)但是我不能將TLB導入到XE2中,因爲它沒有出現在'registered'列表中。我也不想嘗試註冊它,因爲我不想在mlang.dll之外創建依賴項。 TLibImp不會打開mlang.dll。

我查看了GenTLB(它不打開MLANG.IDL)並閱讀了很多關於使用類型庫的EMB Docwiki,包括語句「RAD Studio上的類型庫使用RIDL而不是IDL」。然後,用XE2安裝IDL文件的大文件夾的目的是什麼?由於它們位於包含文件夾中,它們僅適用於C++而不適用於Delphi嗎?

回答

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; 
+0

謝謝,這聽起來容易,我應該自己發現的添加按鈕!但不幸的是,試圖加載mlang.tlb只是彈出'訪問OLE註冊表錯誤'。我懷疑我創建MIDL時可能沒有選擇正確的選項。使用Delphi附帶的工具,沒有辦法從IDL到TLB? – frogb

+0

是的,我也從對話框中得到了錯誤。試試tlibimp,這對我有效。 –

+0

TLB上的TLIBIMP?這也失敗了。但現在它起作用了!我會按... – frogb