2016-11-19 5 views
-1

でATLコンポーネント私はDelphiでCOMオブジェクトを使用しようとして失われています[もっと分かりやすいように書き換え]デルファイ

を使用。オブジェクトはVisual Studio ATLを使用して作成されました。

私はVBScriptでオブジェクトをテストした:

Set ourObj = Server.CreateObject("JC_ATL_Q.JCsimple") 
ourJCversion = ourObj.JCversion 
Response.Write "<li>Get: JCversion = " + cstr(ourJCversion) 

は、Delphiで、Iは、続い:

http://101.lv/learn/delphi/ch15.htm1

は以下のコードを作成するが、これはエラーを生成し

"指定された手順はf ound "

私はレジストリをチェックしており、TGUIDは正しいようです。

IDispatchインターフェイスにアクセスするのに正しいことをしていますか?何がうまくいかないかについてのさらなる情報を得る手段はありますか?

IJCsimple = interface(IUnknown) 
    ['{96154141-4169-4321-BADC-A08F1B2D53A4}'] 
    function get_JCversion: Integer; stdcall; 
    end; 

const 
CLASS_JCsimple: TGUID = '{6724FCDA-14F6-4D40-82A1-C8FD451BED9C}'; 

var 
    Form2: TForm2; 
    Result : variant; 

implementation 

procedure TForm2.Button1Click(Sender: TObject); 
    begin 

    Result := CreateComObject(CLASS_JCsimple) as IJCsimple; 

    end; 

end. 

ソリューション: レミールボーが指摘するように、私は車輪の再発明が、コンポーネント>>インポートコンポーネント>>インポートタイプライブラリツールを使用する必要があります

+0

あなたの具体的な質問は何ですか。 –

+0

プロパティ "バージョン"にアクセスしようとすると、例外が発生します。誰もこれを分類するのを助けることができますか? – jcsubmit

+0

あなたの質問は何ですか?テキストの具体的な詳細は、私たちが取り上げたいものですか? 「誰にでも助けてもらえますか」という質問はここでは有効ではありません。 –

答えて

1

すべきではありませんあなたが使用していますインタフェースメソッドの宣言が間違っています。言われて、あなたが開始するために、手動でインタフェースユニットを実装してはならないことを

type 
    IJCsimple = interface(IUnknown) 
    ['{DA13AEFD-C5A1-4A94-AD74-B9C355E1F19C}'] 
    function Version: Integer; safecall; 
    end; 

type 
    IJCsimple = interface(IUnknown) 
    ['{DA13AEFD-C5A1-4A94-AD74-B9C355E1F19C}'] 
    function get_Version(out Result: Integer): HResult; stdcall; 
    property Version: Integer read get_Version; 
    end; 

またはこの:それはより次のようになります。正解は、IDEのインポートにCOMオブジェクトのTypeLibraryのを持っているし、あなたのための適切なラッパーコードを生成することです:

Importing Type Library Information

+0

ありがとう!それは私の問題を解決します。 – jcsubmit

関連する問題