的VBScript“类型不匹配”的问题与“[IN,OUT] BSTR *”参数(VBScript “

2019-07-31 14:13发布

我用的是有一些它的方法传递值回作为BSTR指针第三方COM对象的工作。 由于VBscript的仅支持Variant类型尝试在像的object.method(sMyString)的方式,使用合理地“类型不匹配”错误结束。

我怀疑是由COM对象本身而不是VBscript的解释,因为对象获得字符串的指针,而不是产生这个错误。 我试图要解决它的字符串数组定义,但它仍然是同样的错误。

所以我在想,如果有人有类似的问题,并利用什么解决方法。

只是为了强调。 我没有对COM对象的控制。 它在供应商的应用。 我不得不使用它“原样”。

谢谢你,阿尔伯特Gareev

Answer 1:

对于VBScript中允许使用一个位类型的规则限制相对于其他语言。 你的情况,你有[in, out] BSTR * -这是不支持的。 允许的唯一类型[out]参数是VARIANT * 。 的VBScript将需要的类型为[出来,RETVAL]为了支持BSTR在该位置类型。 当然,你只能有一个[retval]每个功能使得在一定程度限制。

在你的情况的任何情况下,你是那种坚持,因为你不能修改服务器代码。 我会做的是C ++编写一个COM包装,包装的API到的东西,你可以调用。 在COM包装可以改变[out] BSTR *[out] VARIANT *或别的东西是可用的。



Answer 2:

考虑包装的解决方法后,我发现,使用现有的COM自动化对象有一定的优势与开发自己的API。

因为我已经为其他目的使用Excel.Application对象我刚刚创建的VBA一对夫妇宏并根据需要执行它们。

在我的博客文章详细信息:

http://automation-beyond.com/2009/09/21/gp-qtp-automation-sanscript/

http://automation-beyond.com/2009/09/23/gp-automation-vbscript-limitation/

谢谢你,阿尔伯特Gareev



文章来源: VBScript “Type Mismatch” issue with “[in, out] BSTR * ” parameter