VC++で作成したCOM&タイプライブラリの仕様について


SELNA  2004-04-07 09:39:12  No: 8260

VC++で作成したCOMをDelphiで使用しようと思い、Delphiを少しばかり勉強したのですがC言語でいうvoid* pが、var p: Pointer;となってしまい実質ポインタのアドレスを渡しているような結果の引数になってしまいます。

IDLでは以下のように定義しています。↓
HRESULT Func( [in] void* p );

するとDelphi側ではポインタの変数パラメータになります。↓
function Get(var p: Pointer): HResult; stdcall;

当然Delphiでこのメソッドを使用すると例外エラーになってしまいます。
C/C++、VBではうまくいきます。
void*は使うなということなんでしょうか?(汗

もう一つ質問があるのですが、タイプライブラリ内に定義した普通の関数がVBでは認識してくれるのですが、Delphiではダメでした。
そもそもタイプライブラリに関数を定義してもDelphiでは対応してないのでしょうか?

IDLでは、

[dllname("xxxxxx.dll")]
module xxxxxxAPI
{
    [entry("Hoge")]
    void __stdcall hoge(void);
};

としています。

初歩的な質問ではありますがよろしくお願いします。

/* 開発環境 */
Win2k SP4
VC++6.0 SP6 非ATL
Delphi Personal 6


John7  2004-04-10 11:17:19  No: 8261

SELNAさん  はじめまして

DelphiでのCOMの使い方はこちらのHPが参考になるかも知れません。
http://www.geocities.co.jp/SiliconValley-SanJose/2560/delphi4/activex/index.htm


SELNA  2004-04-11 03:53:42  No: 8262

John7さん参考になるHPの紹介ありがとうございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加