Array als Parameter für eine Funktion

M

maxi

Hi Leute !

Ich hab eine Funktion, die als Parameter ein Array will.

Public Function fnFunction(Feld() As Integer) As Integer

Global KFZ() As Integer
ReDim KFZ(0 To AnzahlEinzelTeile)
ZuOberst = fnFunction(KFZ)

das t ja.

Aber jetzt hab ich ein Zweidimensionales Array. und das check ich nicht.

Global S() As Integer
ReDim S(1 To AnzahlStapel, 1 To AnzahlEinzelTeile)

ZuOberst = fnFunction(S(1))

geht nicht: unverträglicher Typ: Datenfeld erwartet.

ok, ich könnte die Spalte vom 2d Array in ein 1d Array umkopieren, und dann dieses als Parameter verwenden.
Oder eine zweite function schreiben, die ein 2d array will + den Spaltenindex.
schwachsinn.
gibts hier irgendeine möglichkeit, die Spalte eines 2DArrays zu der funktion zu übergeben ?

oder soll ich gleich mit Range statt Array arbeiten (keine Ahnung, was besser, schneller usw. ist) ?
 
Servus,

dim ArrFeld(2) as string

ArrFeld(0) = "a"
ArrFeld(1) = "b"
ArrFeld(2) = "c"

msgbox ArrFeld(1) ' Meldet >>>> b


anders:

dim ArrFeld(2,2) as string

ArrFeld(0,0) = "a"
ArrFeld(0,1) = "b"
ArrFeld(0,2) = "c"
ArrFeld(1,0) = "d"
ArrFeld(1,1) = "e"
ArrFeld(1,2) = "f"
ArrFeld(2,0) = "g"
ArrFeld(2,1) = "h"
ArrFeld(2,2) = "i"

msgbox ArrFeld(0,1) ' Meldet >>>> b
msgbox ArrFeld(2,0) ' Meldet >>>> g
msgbox ArrFeld(1,1) ' Meldet >>>> e



also zb.:
fnErgebnis(ArrFeld(2,1))

mfg
SkojA
 
Ein doppelter Array musst du als Variant oder Variant() übergeben....

Visual Basic:
public function myFunction(myField() as Variant) return integer
...
'oder
public function myFunction(myField as Variant) return integer
 
hi leute !
sorry. war skifahren.
Danke für eure Antworten. aber leider ...

@ skoja: ich will nicht ein Element eines Feldes übergeben, sondern eine ganze Spalte eines Arrays.
auch @yaslaw: ein ganzes 2D-Array kann ich übergeben. das t.

mein Problem ist: ich will EINE Funktion einmal mit einem 1D Array und dann mit der Spalte eines 2D-Arrays aufrufen.

Function fnFunction(Feld() As Integer) As Integer

und dann diese aufrufen mit einem 1D Feld:

x= fnFunction(Array) das geht.

aber beim 2d Feld gibts Probleme:

x=fnFunction(Gitter(1))
oder
x=fnFunction(Gitter(2)

dim gitter(2,10)
 
Visual Basic:
public function myFunction(myValue as Variant) return integer

Abschliessend myValue analysieren (is_array etc) um mit dem entsprechenden Type zu abreiten.
 
das prob ist beim Aufruf. (ich möchte nur eine Spalte des 2D-Arrays übergeben)
Auch bei den Überwachungsausdrücken kommt dieselbe Meldung:

Watch : - : stapel : : Integer(1 to 2, 1 to 10) : Main.fnLegsAufStapel
- : stapel(1) : : Integer(1 to 10) : Main.fnLegsAufStapel

Watch : : stapel(1) : <Index außerhalb des gültigen Bereichs> : Integer : Main.fnLegsAufStapel


ok. Stapel(1,1) spricht EIN Element des Datenfeldes an.
Aber: Wie kann man eine Spalte (oder Reihe) eines Datenfeldes direkt ansprechen, oder muss mann das wirklich in eine andere Variable (1D-Datenfeld) umkopieren
 
Zurück