Public Declare Function VarPtrArray Lib "VBE6" Alias "VarPtr" (ByRef Var() As Any) As Long
Sub TestProz()
Dim a(3) As Integer
Dim b(3) As Integer
Dim ret As Integer
Dim aPtr As Long
Dim bPtr As Long
a(0) = 1
a(1) = 2
a(2) = 3
a(3) = 4
aPtr = VarPtrArray(a())
bPtr = VarPtrArray(b())
ret = test(a(), b())
End Sub
Public Function test(a_test() As Integer, b_test() As Integer) As Integer
Dim a_testPtr As Long
Dim b_testPtr As Long
a_testPtr = VarPtrArray(a_test())
b_testPtr = VarPtrArray(b_test())
b_test(0) = a_test(0) + 1
b_test(1) = a_test(1) + 1
b_test(2) = a_test(2) + 1
b_test(3) = a_test(3) + 1
test = 1
End Function
Hallo zusammen,
wenn ich versuche, die Adressen der Arrays mit Funktion VarPtrArray zu ermittel, so stelle folgende Fehler fest:
aPtr und bPtr aus der Prozedur TestProz haben den gleichen Wert obwohl sie die Adresse verschiedener Arrays darstellen sollten.
a_testPtr und b_testPtr aus der Funktion haben zwar unterschiedliche Werte aber die Differenz ist nur 4 Byte und das kann doch nicht sein, weil die Arraygröße länger als 4 Byte ist.
Kann mir jemand erklären, ist das Ergebnis der Funktion VarPtrArray hier tatsächlich falsch oder habe ich einen Denkfehler?
Vielen Dank im Voraus!
|