将数组传递到PowerBuilder中的COM方法调用中

时间:2018-10-31 12:30:53

标签: com powerbuilder ole

我想调用一个COM对象方法,该方法采用的参数是PowerBuilder中的数组。该方法可以从其他OLE自动化控制器(VB6,VBScript,VBA,Delphi,PHP等)中很好地工作,在IDL中,它看起来像这样:

    void MyMethod([in, out] SAFEARRAY(VARIANT)* argumentsArray);

到目前为止,我尚未成功从PowerBuilder调用此方法。我总是收到类似于“在XXXXXX中的第XX行调用外部对象函数MyMethod的无效参数类型”类似的运行时错误。据我所知,此错误是在我的方法被调用之前由PowerBuilder生成的,即,它不是从方法本身转换而来的HRESULT,并且根本不会被调用。

我从PowerBuilder调用同一COM对象的其他方法没有问题-那些不使用数组作为参数的方法。

我尝试过但不能奏效的PowerBuilder代码示例如下:

Any Arguments[]
Arguments[1] = MyArgument
MyObject.MyMethod(Arguments)

OLEObject Arguments[]
Arguments[1] = MyArgument
MyObject.MyMethod(Arguments)

OLEObject Arguments[0 to 0]
Arguments[0] = MyArgument
MyObject.MyMethod(Arguments)

OLEObject Arguments[0 to 0]
Arguments[0] = MyArgument
MyObject.MyMethod(REF Arguments)

我已经搜索了StackOverflow和Web,并且只找到了相反问题的答案-如何将COM方法结果数组传递给PowerBuilder。

然后如何传递数组?

0 个答案:

没有答案