Passage de tableaux comme paramètres dans VB6

Le code suivant tue VB6 (sp6) avec une "exception non gérée anomalie dans VB.exe" sur les deux machines dans le bureau sur la ligne marquée.

''# 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 ce que je peux dire sur divers sites, je suis de passage d'un tableau correctement, mais suis-je vraiment le faire correctement, et pourquoi est-il causer de VB6 à mourir si horriblement?

Est-il un moyen de la consigne à la syntaxe surligneur quelle langue il est arriver?
Êtes-vous sûr que ce code est correct? Le code à l'intérieur de Classe2.cls semble être la même que dans Form1.frm. Est-ce correct?
Ce code ne fait pas de sens. Où est ArrayHolder.Ajouter? Pourquoi le code en Cours2.cls est la même que dans Form1.frm?
Je me posais la même chose. Et je me demande si il est vraiment appelé "Class2", et si elle l'est, pourquoi.
Désolé. Le découpage et le collage s'est mal passé

OriginalL'auteur graham.reeds | 2009-05-12