2017-03-15 14 views
1

현재 ActiveX-Interface 및 특히 Variant-Array와 관련된 문제로 조금만 고심하고 있습니다. 전환을 달성하는 방법에 대한 답변을 찾았지만 불행히도 지금까지는 아무 것도 작동하지 않았습니다. 어쩌면 당신이 나를 도울 수 있습니다. 여기에 내 문제가 :JavaScript에서 COM 배열로 개체 배열 변환

나는 ActiveXInterface 통해 검색된 일부 개체가 있습니다. 이제 하나의 ActiveX-Method는 어레이에 두 개의 객체가 있어야합니다.

는 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()는 단지 사람이 내가 사람들을 넣을 수있는 방법을 생각을 가지고있는 경우 TypeConflict

그것은 좋은 것입니다 반환

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

그냥 유지 기능을 정의되지 않은 반환 및 호출 유지 배열에있는 두 개의 객체를 내 응용 프로그램에 변형 배열로 전달합니다.

답변

-1

자주 오류의 잘못된 방향을 찾고있었습니다. 비록 내가 (여전히) vbArray의 내용을 읽을 수 없다해도 그것은 비어 있지 않습니다. 'CATKinCynlindricalJoint'의 오타를 수정 한 후에

나는 vbArray.Items()를 인수로 사용하여 AddJoint-Method가 실패했다는 오류를 발견했습니다. 방금 정의되지 않은 메서드를 시도한 경우 TypeConflict가 반환됩니다. 그래서 분명히 vbArray.Items()는 실제로 정의되지 않았습니다.

그 후 나는 내 참조를 만들고 잘못된 변환을 사용하여 vbArray 로의 변환이 실제로 작동한다는 것을 알아 차 렸습니다. 내가 만든 오류는 Catia의 세부 묘사로 이어지지 않으므로 그 부분에 뛰어 들어 가지 않습니다.

+0

당신은 "대답"을 남기라는 요지입니다. 이것은 하나의 포럼처럼 취급하지 마십시오. – Lankymart