2009-04-20 26 views
0

我有一個簡單的COM dll,它帶有一個需要兩個字符串的方法。在delphi的類型庫編輯器中,這些字符串被定義爲LPSTR。這轉換爲TLB文件中的PChar。當從D2007升級到D2009時,由於PChar現在已經從PAnsiChar變爲PWideChar(當它從ridl文件生成時它仍然變成TLB文件中的PChar),這成爲一個問題。並且界面需要與前一個兼容...COM服務器Delphi 2009中的AnsiString參數

有沒有辦法在TLB文件中獲取PAnsiChar作爲類型,以便它對應於D2007中的前一個聲明?

+0

您應該使用BSTR開頭的所有COM字符串參數。 – 2009-12-14 20:05:21

回答

2

您可以自行修改生成的代碼。最簡單的方法可能是重新聲明PChar:

type 
    PChar = PAnsiChar; 

在生成的單元之上。

或者只是搜索並用PAnsiChar代替PChar的所有發生(如果需要)。

順便說一句,這是一個奇怪的COM DLL,因爲它不是自動化兼容的。通常,BSTR(Delphi中的WideString)用於COM中的字符串。

+0

你說得對,它是一個奇怪的界面......最好的方法可能是製作一個新版本(它只在我們自己的軟件內部使用)。 – ajob 2009-04-20 12:42:09