我想在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覆盖......
答案 0 :(得分:3)
导入过程导致错误声明。它应该是:
function Fetch(out vValue: OleVariant): Integer;
如果语义是OUT,
function Fetch(var vValue: OleVariant): Integer;
如果semanics是IN / OUT。
当然,其中任何一个都可以使用,但你可以使用var或out来表达对调用者的意图。