1

Free Pascal プロジェクトで ActiveX-Object を使用したいのですが、ドキュメントから、1 つのメソッドが次のように宣言されていることがわかっています。

long Fetch(VARIANT* vValue)

vVariant には、呼び出し後に結果 (整数または浮動小数点値) が含まれます。

LazActiveX の「タイプ ライブラリのインポート」関数は、これを次のように変換しました。

_SomeApi = dispinterface
  ['...']
  ...
  function Fetch(vValue: OleVariant):Integer;
  ...
end;

OleVariant については少し驚きました。返されるのは単純なデータ型だけだからです。また、v: OleVariant で Fetch(v) を呼び出すと、EOleSysError (型の不一致) が発生します。

TLBでこのメソッドを正しく宣言する方法、またはデータにアクセスする方法を誰かに説明してもらえますか? 残念ながら、私は Fetch() のソースを持っておらず、このようなもののいくつかは NDA でカバーされています...

4

1 に答える 1

3

The import process resulted in an erroneous declaration. It should be:

function Fetch(out vValue: OleVariant): Integer;

if the semanics are OUT, and

function Fetch(var vValue: OleVariant): Integer;

if the semanics are IN/OUT.

Of course, either of those will work, but you can use var or out to express intent to the caller.

于 2013-12-08T09:25:20.063 に答える