Mehrdimensionales Array on the Fly erstellen

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Bob

Betreff: Mehrdimensionales Array on the Fly erstellen

BeitragFr, Jun 30, 2006 12:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,

als blutiger MAX Anfänger hab ich ein Problem mit dem erstellen von Mehrdimensionalen Array's on the fly:

'geht
Local int_array:Int[]
int_array=New Int[10]


'geht nicht
Local int_array2:Int[]
int_array2=New Int[10,10]

Was mach ich falsch?
Danke
Er soll an den Spielen teilnehmen bis er spielend stirbt. MCP - TRON

BtbN

BeitragFr, Jun 30, 2006 12:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Es muss nicht "Local int_array2:Int[]", sondern "Local int_array2:Int[,]" heißen.

Bob

BeitragFr, Jun 30, 2006 13:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi BORNtobeNAMELESS,

danke.

Ich frage mich allerdings wo du diese Information her hast.
Die OH gibt darüber überhaupt keinen aufschluss.
(Wie über vieles andere auch nicht)

Gibt es eine bessere Hilfe als die orginal OH.
Er soll an den Spielen teilnehmen bis er spielend stirbt. MCP - TRON

BtbN

BeitragFr, Jun 30, 2006 13:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hatte selber mal das selbe Problem.
Nach 20Min Probieren hatte ich die Lösung.

Rone

BeitragFr, Jun 30, 2006 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
So könnte man das auch machen:
Code: [AUSKLAPPEN]

Local breite:Int=10,hohe:Int=10
Local feld:Int[][]

feld = feld[..breite]
For Local I:Int = 0 To breite-1
   feld[I] = feld[I][..hoheY]
Next


mfg

Bob

BeitragFr, Jun 30, 2006 14:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Rone.
Hab ich auch nicht gewusst.

Weis jemand wie ich später die Dimensionen wieder zurück gewinnen kann?

Beispiel:

x = Rand(1,5)
y = Rand(1,5)
Local arr:Int[,]
arr=New Int[x,y]

Print arr.length +" x * y " + x + " " +y
Mit Dimensions() klappts auch irgendwie nicht.

Ich weis halt zur Laufzeit nicht unbedingt in welcher Größe ein Array erzeugt wird.
Er soll an den Spielen teilnehmen bis er spielend stirbt. MCP - TRON

Rone

BeitragFr, Jun 30, 2006 15:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Local breite:Int,hohe:Int
Local feld:Int[][]

breite = Input("Breite:   ").ToInt()
hohe   = Input("Hoehe:   ").ToInt()

feld = feld[..breite]
For Local I:Int = 0 To breite-1
   feld[I] = feld[I][..hohe]
Next

Print "-----------------------------------"
Print "Breite:   "+feld.length
Print "Hoehe:   "+feld[0].length



mfg
 

Dreamora

BeitragFr, Jun 30, 2006 16:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Sicher gehts mit dimensions:

Dimensions()[0] bzw [1] in deinem Falle. Dimensions liefert einen Int array zurück.

der weg meines vorschreibers geht nur mit array of array
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Bob

BeitragSa, Jul 01, 2006 9:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Dremora,

warst mal wieder meine retung.

Ich habe es zwar merfach mit allen möglichen Kombinationen von Dimensions versucht. Aber da in der OH golgendes steht:

"Dimensions:Int[]() Get array dimensions. If the array is empty, an empty array is returned. "

Hat es bei mir nie mit Dimensions[1]() oder Dimensions[](1)
geklappt.
Er soll an den Spielen teilnehmen bis er spielend stirbt. MCP - TRON
 

Dreamora

BeitragMo, Jul 03, 2006 9:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Scheint als würdest du noch nicht ganz verstehen, was die Method / Function Deklarationen aussagen.

:Int[] heisst, dass ein Int Array zurück geliefert wird. Sprich das was zurück gegeben wird ist das was du nachher hast, wenn du die Funktion / Methode aufrufst. Nicht mehr aber auch nicht weniger Smile

-> .Dimensions() gibt dir einen Array zurück, ist also das gleiche als wenn da wirklich ein Array stehen würde (was eine sehr schöne und praktische Sache ist).
Um nun diesen Array der da steht zu nutzen, musst du lediglich [index] nutzen, wie du es bei einem "richtigen" array auch tun würdest.

Von daher kommt diese "Lösung".
Musst dir halt bei den Funktionen/Methoden jeweils überlegen, was ihre Deklarationen darüber aussagen, was du von ihnen zurück erhälst bzw. wofür sie stehen, wenn du sie nutzt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group