2009-04-20 16 views
0

2つの文字列を受け取るメソッドを持つ単純なCOM DLLがあります。 delphiのタイプライブラリエディタでは、これらの文字列はLPSTRとして定義されています。これは、TLBファイル内のPCharに変換されます。 D2007からD2009へのアップグレードでは、PCharがPAnsiCharからPWideCharに変更されたため、これが問題になりました(ridlファイルから生成されたTLhファイルではまだPCharになります)。そしてインターフェイスは前のものと互換性がある必要があります...COMサーバーDelphi 2009のAnsiStringパラメータ

TLBファイルでPAnsiCharをタイプとして取得して、D2007の以前の宣言に対応する方法はありますか?

+0

まず、すべてのCOM文字列パラメータにBSTRを使用する必要があります。 –

答えて

2

生成したコードを自分で変更することができます。最も簡単な方法は、おそらくPCharを再宣言することです:

type 
    PChar = PAnsiChar; 

生成されたユニットの上に。

また、PCharのすべての状況(必要な場合)をPAnsiCharで検索して置き換えてください。

BTWはオートメーションと互換性がないので、奇妙なCOM DLLです。通常、COMの文字列にはBSTR(DelphiのWideString)が使用されます。

+0

あなたは正しいです、それは奇妙なインターフェイスです...ベストバージョンはおそらくそれの新しいバージョンを作ることです(それは私たち自身のSWによって内部的にのみ使用されます)。 – ajob

関連する問題