【问题标题】:Convert VBScript VT_ARRAY|VT_U1 Variant function parameter to JavaScript将 VBScript VT_ARRAY|VT_U1 Variant 函数参数转换为 JavaScript
【发布时间】: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


【解决方案1】:

这样试试

例如,这可能是您的 javascript 代码

function UtilBlobToVariant(BlobPointer,BlobSize) {

 // your code here then at the end:

 return pV; 

}

【讨论】:

  • 感谢您的回答!不幸的是,UtilBlobToVariant 函数是第 3 方 COM 库的一部分,所以我无法更改它的定义。我已经编辑了我的问题以解决您的问题。
猜你喜欢
  • 2013-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-26
  • 1970-01-01
  • 2010-10-11
  • 1970-01-01
相关资源
最近更新 更多