Il seguente codice uccide VB6 (sp6) con un 'errore di eccezione non gestita in VB.exe' su due macchine nell'ufficio sulla riga contrassegnata.Passare gli array come parametri in 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
Da quello che posso dire su vari siti web sto passando un allineamento correttamente, ma in realtà sto facendo in modo corretto, e perché è causando VB6 a morire in modo orribile?
C'è un modo per suggerire all'evidenziatore della sintassi che lingua sta ottenendo? –
Sei sicuro che questo codice sia corretto? Il codice all'interno di Class2.cls sembra essere lo stesso di Form1.frm. È corretto? –
Questo codice non ha senso. Dov'è ArrayHolder.Add? Perché il codice in Class2.cls è uguale a quello in Form1.frm? – GSerg