I have trouble marshalling array
I have a VB COM class TestArrClass
Imports System.Runtime.Remoting
Imports System.Runtime.InteropServices
<ComClass(TestArrClass.ClassId, TestArrClass.InterfaceId,
TestArrClass.EventsId)> _
Public Class TestArrClass
Public Function atestIntStrArr(ByVal aiLen As Integer, _
<MarshalAs(UnmanagedType.LPArray, ArraySubType:=UnmanagedType.LPStr,
_
SizeParamIndex:=1)> ByRef astr As String(), _
<MarshalAs(UnmanagedType.LPArray, SizeParamIndex:=1)> ByRef aiPosn()
_
As Integer) _
As Integer
Dim IntArr() As Integer = {0, 1, 2, 3, 4, 5}
Dim iarr() As Integer
Dim lstrArr() As String = {"X", "Y", "A", "c", "d", "F"}
iarr = lstrArr.Clone()
If aiLen >= 6 Then
aiLen = 6
astr = lstrArr.Clone()
Return aiLen
ElseIf aiLen > 0 Then
ReDim Preserve lstrArr(aiLen)
astr = lstrArr.Clone()
Return aiLen
Else
aiLen = 0
End If
Return aiLen
End Function
When I call from vbscript
set TestArrClass = createObject("TestArrClass.TestArrClass")
iLen = TestArrClass.atestIntStrArr (aiLen, str_results , iarr)
' gives "Microsoft VBScript runtime error: Variable uses an Automation
type not supported in vbscript: 'atestIntStrArr'"
what did I do wrong?
Should I have a differnt call prototype for VBSCRIPT versus C style
application?