在Free Pascal中使用ActiveX方法中的VARIANT *参数

时间:2013-12-08 00:03:34

标签: c++ delphi activex freepascal idispatch

我想在Free Pascal项目中使用ActiveX-Object,从文档中我知道一个方法被声明为

long Fetch(VARIANT* vValue)

其中vVariant将在调用后包含结果(整数或浮点值)。

LazActiveX“导入类型库”功能已将其转换为

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

我对OleVariant感到有些惊讶,因为只返回简单的数据类型。当使用v:OleVariant调用Fetch(v)时,我也会得到一个EOleSysError(类型不匹配)。

有人可以向我解释如何在TLB中正确声明此方法或如何访问数据?不幸的是,我没有Fetch()的来源,其中一些内容被NDA覆盖......

1 个答案:

答案 0 :(得分:3)

导入过程导致错误声明。它应该是:

function Fetch(out vValue: OleVariant): Integer;

如果语义是OUT,

function Fetch(var vValue: OleVariant): Integer;

如果semanics是IN / OUT。

当然,其中任何一个都可以使用,但你可以使用var或out来表达对调用者的意图。