次のコードでは、マークされた行のオフィスにある2台のコンピュータで、VB6(sp6)を「VB.exeの未処理例外エラー」で強制終了します。私は私が正しく配列を渡していますが、私は実際にそれを正しくやって、そしてなぜそれがVB6はとても恐ろしく死ぬことを引き起こしている様々なウェブサイト上で伝えることができるものから、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
?
構文がハイライターにどのような言語になっているかをヒントしていますか? –
このコードは正しいですか? Class2.cls内のコードはForm1.frmと同じに見えます。これは正しいです? –
このコードは意味がありません。 ArrayHolder.Addはどこですか?なぜClass2.clsのコードがForm1.frmのコードと同じですか? – GSerg