带有"[in,out] BSTR*"参数的VBScript"类型不匹配"问题

Alb*_*eev 2 com vbscript bstr

我正在使用第三方COM对象,它有一些方法将值作为BSTR指针传回.由于VBscript仅支持Variant类型尝试以类似Object.Method(sMyString)的方式使用,因此合理地以"类型不匹配"错误结束.

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

所以我想知道是否有人有类似的问题以及使用了哪些变通方法.

只是为了强调.我无法控制COM对象.这是供应商的应用程序.我必须"按原样"使用它.

谢谢你,Albert Gareev

180*_*ION 6

与其他语言相比,允许VBScript使用的类型的规则受到限制.在你的情况下,你有[in, out] BSTR *- 这是不支持的.[out]参数允许的唯一类型是VARIANT *.VBScript将要求类型为[out,retval]以支持该BSTR位置的类型.当然,[retval]每个功能只能有一个,所以这有点限制.

在任何情况下,您都会因为无法修改服务器代码而陷入困境.我要做的是用C++编写一个COM包装器,它将API包装成你可以调用的东西.在COM包装可以改变[out] BSTR *一个[out] VARIANT *或别的东西,是可用的.