Die übergabe von arrays als Parameter in VB6
Den folgenden code kills VB6 (sp6) mit einer "unbehandelte Ausnahme-Fehler in VB.exe' auf zwei Rechnern im Büro, auf der Linie markiert.
''# 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
Was ich sagen kann, auf verschiedenen websites bin ich ein array übergeben, richtig, aber bin ich es wirklich zu tun korrekt, und warum ist es verursacht Sie VB6, um zu sterben so schrecklich?
- Gibt es eine Möglichkeit, anspielend auf den syntax-highlighter, was Sprache ist, ist es immer auf???
- Sind Sie sicher, dass dieser code richtig ist? Der code innerhalb Class2.cls scheint das gleiche wie in Form1.frm. Ist das richtig?
- Dieser code macht keinen Sinn. Wo ist ArrayHolder.Hinzufügen? Warum code in Class2.cls ist die gleiche wie in Form1.frm?
- Ich fragte mich die gleiche Sache. Und ich Frage mich, ob es wirklich sogenannte "Class2", und wenn es ist, warum.
- Sorry. Ausschneiden und einfügen schief gelaufen
- Sieht aus wie es ist immer noch falsch. Class2.cls scheint immer noch die selbe wie Form1.cls.
- OK, sieht jetzt besser 🙂
- Ich würde gerne in der Lage sein zu befestigen, kleines zip-Dateien, die für postings...
- Verschoben in die Eingabezeile des Todes. Es war richtig vor, aber in der falschen Datei. Einen schlechten Tag haben.
- Ich sehe nicht ein Add-Methode wird in Class2.
- Graham, ich glaube, Sie sollten akzeptieren, Eduardo Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe darauf keine Antwort, und es ist sicher eine merkwürdige Frage, aber warum nicht einfach eine Methode hinzufügen und verschieben auf?
Dies ist ein bug in der IDE (kompiliert ist ok), dass MS nie behoben. Ich bin mit einem workaround mit einem temp-array wie dieses:
Zur info, es wird noch schlimmer mit Byte-arrays (Lange arrays sind sicher), wenn Sie versehentlich mit der Maus über die Parameter-oder die array-Eigenschaft. Besser halten Sie Ihre Maus vom code Weg :-))
Ich habe keine Ahnung, warum dies geschieht, aber wenn Sie trotzdem möchten, dass eine Kopie eines Arrays mit einer Variante in class2:
Behebt es, aber trotzdem bin ich neugierig über den Grund.