El siguiente código elimina VB6 (sp6) con un 'error de excepción no controlada en VB.exe' en dos máquinas de la oficina en la línea marcada.Pasar matrices como parámetros en VB6
''# Form1.frm
Option Explicit
Private ArrayHolder As Class2
Private Sub Command1_Click()
Set ArrayHolder = New Class2
Dim arr(3) As Long
arr(0) = 1
arr(1) = 2
arr(2) = 3
ArrayHolder.Add arr
End Sub
''# -----------------------------------------------------------
''# Class1.cls
Option Explicit
Private m_myArray() As Long
Public Property Get myArray() As Long()
myArray = m_myArray
End Property
Friend Property Let myArray(ByRef anArray() As Long)
m_myArray = anArray
End Property
''# -----------------------------------------------------------
''# Class2.cls
Option Explicit
Friend Function Add(newArray() As Long) As Class1
Dim oClass As Class1
Set oClass = New Class1
oClass.myArray = newArray <- This kills VB6 dead
MsgBox "passed"
End Function
De lo que puedo decir en varios sitios web estoy pasando una matriz correctamente, pero estoy realmente hacerlo correctamente y por qué lo está causando VB6 a morir tan terriblemente?
¿Hay alguna forma de insinuar al marcador de sintaxis qué idioma está recibiendo? –
¿Estás seguro de que este código es correcto? El código dentro de Class2.cls parece ser el mismo que en Form1.frm. ¿Es esto correcto? –
Este código no tiene sentido. ¿Dónde está ArrayHolder.Add? ¿Por qué el código en Class2.cls es el mismo que en Form1.frm? – GSerg