我目前正在为有关 ActiveX 接口(interface)(特别是变体数组)的问题而苦苦挣扎。我找到了一些如何实现转换的答案,但不幸的是到目前为止对我来说没有任何作用。也许你可以帮助我。这是我的问题:
我有一些通过 ActiveXInterface 检索的对象。现在,一个 ActiveX 方法需要在一个数组中包含其中两个对象。
在 VB 中,这就是您基本上要做的事情
Dim aVar1(1)
Set aVar1(0) = oReferenceLine1
Set aVar1(1) = oReferenceLine2
之后,将此数组传递给这样的函数
Set oNewJoint = oNewMechanism.AddJoint("CATKinCylindricalJoint",aVar1)
使用我通过界面检索的所有内容工作正常,但我无法创建一个数组来传递该函数。我发现解决这个问题的一种方法是这样的
var vbArray = new ActiveXObject('Scripting.Dictionary');
$.each(JSArray, function(index){
vbArray.add(index, JSArray[index]);
});
return vbArray.Items();
但是如果我这样做。我只是返回一个未定义的。 vbArray 已创建,我可以访问例如vbArray.Item(1) 但 vbArray.Items() 只是不断返回未定义并调用函数
var joint = mechanism.ActiveXObject.AddJoint('CATKinCynlindricalJoint', vbArray);
只是不断返回TypeConflict
如果有人知道如何将这两个对象放入一个数组中并将它们作为变体数组传递到我的应用程序,那就太好了。
最佳答案
我经常在错误的方向上寻找错误。尽管我无法(并且仍然)无法读取 vbArray 的内容,但它不是空的。在我纠正了“CATKinCynlindricalJoint”中的拼写错误之后
我注意到,当我使用 vbArray.Items() 作为参数时,我收到了 AddJoint-Method 失败的错误。如果我只是尝试未定义的方法,我会返回 TypeConflict。显然 vbArray.Items() 并不是真正未定义。
之后我注意到我使用了错误的参数来构建我的引用,并且转换为 vbArray 确实有效。我所犯的错误在 Catia 中非常详细,因此我不会深入讨论。
关于javascript - 将对象数组从 JavaScript 转换为 COM 变体数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42809249/