我用的是有一些它的方法传递值回作为BSTR指针第三方COM对象的工作。 由于VBscript的仅支持Variant类型尝试在像的object.method(sMyString)的方式,使用合理地“类型不匹配”错误结束。
我怀疑是由COM对象本身而不是VBscript的解释,因为对象获得字符串的指针,而不是产生这个错误。 我试图要解决它的字符串数组定义,但它仍然是同样的错误。
所以我在想,如果有人有类似的问题,并利用什么解决方法。
只是为了强调。 我没有对COM对象的控制。 它在供应商的应用。 我不得不使用它“原样”。
谢谢你,阿尔伯特Gareev
对于VBScript中允许使用一个位类型的规则限制相对于其他语言。 你的情况,你有[in, out] BSTR *
-这是不支持的。 允许的唯一类型[out]
参数是VARIANT *
。 的VBScript将需要的类型为[出来,RETVAL]为了支持BSTR
在该位置类型。 当然,你只能有一个[retval]
每个功能使得在一定程度限制。
在你的情况的任何情况下,你是那种坚持,因为你不能修改服务器代码。 我会做的是C ++编写一个COM包装,包装的API到的东西,你可以调用。 在COM包装可以改变[out] BSTR *
到[out] VARIANT *
或别的东西是可用的。
考虑包装的解决方法后,我发现,使用现有的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