2014-10-17 22 views
2

我想下面的函數從VBScript轉換爲JavaScript:轉換的VBScript VT_ARRAY | VT_U1變函數參數的JavaScript

Object.UtilBlobToVariant(VARIANT * PV,長BlobPointer,長BlobSize)

pv何處被定義爲:

,其與類型返回一個VARIANT(VT_ARRAY | VT_U1)

UtilBlobToVariant函數是第三方COM庫的一部分,所以我無法更改其定義。

這兩個長參數在我的這個函數的JavaScript版本中工作得很好,但參數pV給我一個「類型不匹配」的錯誤後綴,因爲pV總是回到未定義狀態。

Object是一個ActiveX對象,所以我的目標是嚴格的Internet Explorer,因爲這個和其他的COM依賴關係。我試過只是傳遞一個var,或者將它實例化爲一個空數組[]或一個空對象{}但這些都沒有奏效。這甚至有可能嗎?

+0

[在JavaScript中 「內外兼修」 參數工作]的可能重複(http://stackoverflow.com/questions/ 5122704 /用-out-parameters-in-javascript) – 2014-10-20 05:21:19

+0

@CheranShunmugavel - 重複,因爲他們發現有沒有解決方法,通過引用和特定的ActiveX函數?我想也許是一個不同的問題與相同的答案。我到達了,但我希望有一些可以完成的事情。 – DanM7 2014-10-20 14:19:27

+0

我認爲這與某個特定功能或其他功能無關;只是JScript不支持「out」參數。這就是我投票結束的原因。在不知道第三方API的情況下,唯一的長遠想法是,函數應該被稱爲'var arr = Object.UtilBlobToVariant(blobPointer,blobSize)',但這是基於函數聲明看起來像來自C++的事實我有一些模糊的回憶,看到一個C++ COM API,其中函數的返回值實際上被列爲第一個參數。 – 2014-10-21 05:16:34

回答

0

嘗試以這種方式

例如這可能是你的JavaScript代碼

function UtilBlobToVariant(BlobPointer,BlobSize) { 

// your code here then at the end: 

return pV; 

} 
+0

感謝您的回答!不幸的是,'UtilBlobToVariant'函數是第三方COM庫的一部分,所以我不能改變它的定義。我編輯了我的問題來解決你的觀點。 – DanM7 2014-10-17 13:20:31