【发布时间】:2014-10-17 21:19:40
【问题描述】:
我正在尝试将以下函数从 VBScript 转换为 JavaScript:
Object.UtilBlobToVariant(VARIANT *pV, long BlobPointer, long BlobSize)
其中pv定义为:
返回类型为 (VT_ARRAY|VT_U1) 的 VARIANT
UtilBlobToVariant 函数是第 3 方 COM 库的一部分,因此我无法更改其定义。
这两个长参数在我的这个函数的 JavaScript 版本中工作得很好,但是参数 pV 给我一个“类型不匹配”错误后记,因为 pV 总是以未定义的形式返回。
Object 是一个 ActiveX 对象,所以我的目标是严格的 Internet Explorer,因为这个和其他 COM 依赖项。我试过只传递一个var,或者将它实例化为一个空数组[]或一个空对象{},但这些都没有奏效。这甚至可能吗?
【问题讨论】:
-
@CheranShunmugavel - 重复,因为他们发现引用和特定的 ActiveX 函数没有解决方法?我想也许是一个不同的问题有相同的答案。我正在到达,但我希望有什么可以做的。
-
我认为这与特定功能或其他无关;只是 JScript 不支持“out”参数。这就是我投票关闭的原因。在不知道第 3 方 API 的情况下,我唯一的长远想法是,该函数可能应该被称为
var arr = Object.UtilBlobToVariant(blobPointer, blobSize),但这是基于函数声明看起来像是来自 C++ 的事实,并且我对看到 C++ 有一些模糊的回忆函数的返回值实际上被列为第一个参数的 COM API。 -
@CheranShunmugavel - 我一定会尝试的。这就是为什么我认为这个问题值得一问,尽管我很清楚 JavaScript 中没有 by-ref。带有数组等的 COM 可能有一些奇怪的解决方法。谢谢。
标签: javascript vbscript variant