Преобразование массива объектов в массив вариантов COM из JavaScript

В настоящее время я немного борюсь с проблемой, связанной с ActiveX-интерфейсом и, в частности, с Variant-Array. Я нашел несколько ответов, как добиться преобразования, но, к сожалению, у меня пока ничего не работает. Возможно ты можешь помочь мне. Вот моя проблема:

У меня есть объекты, полученные через 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 () просто продолжает возвращать undefined и вызывать функцию

var joint = mechanism.ActiveXObject.AddJoint('CATKinCynlindricalJoint', vbArray);

просто продолжает возвращать TypeConflict

Было бы здорово, если бы у кого-то была идея, как я могу поместить эти два объекта в массив и передать их как вариантный массив моему Приложению.


person relief.melone    schedule 15.03.2017    source источник


Ответы (1)


Как часто я искал ошибку не в том направлении. Несмотря на то, что я не мог (и до сих пор) не могу прочитать содержимое vbArray, он не пуст. После того, как я исправил опечатку в CATKinCynlindricalJoint

Я заметил, что когда я использовал vbArray.Items () в качестве аргумента, я получил сообщение об ошибке AddJoint-Method. Если бы я просто попробовал метод с undefined, мне вернули TypeConflict. Итак, очевидно, что vbArray.Items () на самом деле не был неопределенным.

После этого я заметил, что использовал неправильный аргумент для создания своих ссылок, и преобразование в vbArray действительно сработало. Ошибка, которую я сделал, довольно подробно описана Катей, поэтому я не буду вдаваться в подробности.

person relief.melone    schedule 15.03.2017
comment
Вы должны погрузиться в это, в этом весь смысл оставлять ответ. Это не форум, пожалуйста, не относитесь к нему как к форуму. - person user692942; 17.03.2017