comのdllファイルをdelphiにインポートした後、delphiはlib_tlb.pasファイルを生成しました。comコンポーネントのdelphi tlb_libファイルは、インタフェースとオブジェクトの間に接続していません
はファイルを検査それはTinterface1とIinterface1間の接続がないことを確認するために
Iinterface1 = interface(IDispatch)
function func: Integer; safecall;
procedure proc(param:Iinterface1);
end;
Cointerface1 = class
class function Create: Iinterface;
class function CreateRemote(const MachineName: string): Iinterface1;
end;
Tinterface1 = class(TOleServer)
function func: Integer;
procedure proc(param:Iinterface1);
end;
今その明確示しています。
問題は、Tinterface1でprocを呼び出すときに発生します。これはコンパイルされませんTinterface1はIinterface1を継承しません。
どうすればよいですか?自動生成されたlibを変更しますか?または、Tinterface1をprocに渡したいときに、何をすべきかという良いアイデアがありますか?
この例ではコードを簡略化していますが、コードにはprocに渡す必要があるantherオブジェクトがありますが、procはそのインターフェイスだけを認識します。これは同じ問題です。
更新:それは、COM DLLファイルの手動だとして、procは、インターフェイスが専用のビューのデルファイポイントである
procedure proc(param:^Tinterface1);
べきであると述べています。
実際のコードを投稿する必要があります。 typelibビューアでtypelibを見たことがありますか?ファイルは何を表示すべきですか? –
特定のタイプのlibビューアをお勧めしますか?それは私のものではなく、独自のコードです。 – none
Delphiに付属しているtypelibraryビューアを使用するだけで、構造がどのようなものであるべきかがわかります。そのデルファイIDEがtlb pasを間違って生成している可能性はありません。 –