Array in einer Funktion uebergeben

Nud3l

Mitglied
Hi

ich moechte gerne in einer Funktion eine Array uebergeben was ich dann spaeter bearbeite

bis jetzt sieht es so aus und er meckert bei Call warum? wie muss ich das den deklarieren damit er nicht meckert?

achja ich benutze VB6

dim array(49)


array wird gefuellt

Call bla(array())



Private Function bla(ar() As Long)
ar(1)........

End Function
 
Zuletzt bearbeitet:
Hallo,

es liegt vermutlich daran, dass Du dem Array nicht mitteilst, wie es definiert ist, in der Parameterliste der Sub dann aber das Array als Long zuweist. Daher der Type Mismatch.

Im Übrigen übergibt man in VB6 keineswegs das erste Element (dann würde man nur das ERSTE Element, jedoch nicht das gesamte Array übergeben.

In jedem Fall funktioniert Folgendes (habe ich sogar zur Sicherheit nochmal ausprobiert):

Code:
Sub Test1()
   Dim i As Integer
   Dim TestA(0 To 100) As Long
   For i = 0 To 100
      TestA(i) = i
   Next
   Call Test2(TestA)
End Sub

Sub Test2(TestA() As Long)
   '
   Debug.Print TestA(1)
End Sub

Grüsse
ronaldh
 
Im Übrigen übergibt man in VB6 keineswegs das erste Element (dann würde man nur das ERSTE Element, jedoch nicht das gesamte Array übergeben.

Huh? Mein Verständnis war, dass ein Array eine Auflistung von Zeigern ist, und das mit der Übergabe des ersten Elements, das empfangende Array dann weiss, dass der Zeiger zum nächsten Element 4 Bytes weiter sitzt usw.
:confused:
 
Nachtrag: Ich entschuldige mich für die eventuelle Verwirrung, die ich verursacht habe.

Ron hat natürlich recht mit seiner Aussage, wie Arrays in VB an eine Funktion übergeben werden.

Da ich Bruce McKinney's TypeLib verwende, ist die Win-API für mich wie ein normaler Teil von VB. Ich habe dadurch beide Ansätze durcheinander gebracht.

Bei der Übergabe eines Arrays aus VB heraus an die Windows-API wird das erste Element eines Arrays übergeben, da die empfangende Win-API-Funktion eben einen Zeiger auf das erste Element erwartet.
 
Zurück