Home All Groups Group Topic Archive Search About

vb array tolegacy C appl

Author
8 Oct 2005 11:11 PM
jg
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 called from the C_application I got a vague message of
    ---------------------------
Application Execution Error (R0035)
---------------------------
Application terminated.

Error: Error calling external object function TestArrClass at line 6 in
clicked event of object cb_3 of w_formx.


If 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:: testIntStrArr'"

what did I do wrong?

Should I have a different call prototype for VBSCRIPT versus C style
application?

AddThis Social Bookmark Button