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