Poniższy kod zabija VB6 (sp6) z "nieobsługiwanym wyjątkiem wyjątku w VB.exe" na dwóch komputerach w biurze na linii oznaczonej.Przekazywanie tablic jako parametrów w 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
Z tego co mogę powiedzieć na różnych stronach internetowych I 'm przechodzącą tablicę poprawnie, ale ja faktycznie robi to prawidłowo, i dlaczego jest on przyczyną VB6 umrzeć tak strasznie?
Czy istnieje sposób na podpowiedź do markera składni, w jakim języku się znajduje? –
Czy ten kod jest prawidłowy? Kod w Class2.cls wydaje się być taki sam jak w Form1.frm. Czy to jest poprawne? –
Ten kod nie ma sensu. Gdzie jest ArrayHolder.Add? Dlaczego kod w Class2.cls jest taki sam jak w Form1.frm? – GSerg