Array in Array - z.B.: Int[][] - dynamisch generiert
Übersicht

![]() |
ArtemisBetreff: Array in Array - z.B.: Int[][] - dynamisch generiert |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moin, ich benötige ein Array in einem Array, dynamisch generiert.
Pseudo-Code: [AUSKLAPPEN] Function createArray(size_x:int, size_y:int)
Local array:Int[][] = new Int[size_x][size_y] EndFunction Er meldet da immer, Zitat: Unable to convert from 'Int' to 'Int Array Array' , was ich komisch finde.
Ein Array dieser Art: Int[,] kommt nicht in Frage, da ich das Array in dem anderen Array brauche. Sonst müsste ich noch umständlich ein Array daraus erzeugen. Das wäre der letzte Ausweg. Das hier: Code: [AUSKLAPPEN] Function createArray(size_x:Int, size_y:Int)
gibt ebenfalls nen Error: Expecting identifier.
Local array:Int[] = New Int[size_x][] For Local i = 0 To size_x-1 array[i] = New Int[size_y] Next EndFunction Bin ich jetzt aufm falschen Dampfer, oder geht es nicht so, wie ich das haben will? |
||
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nimm doch Types. Du erstellst eben z.B. 100 Types, und schreibst dir was, womit man sie mit Nummern ansprechen kann. Und dann kannst du ja ein Feld als Array machen. Ich bin recht neu in BMax, aber ich denke es sollte gehen.
Edit: Code: [AUSKLAPPEN] Global tmp:array
Global list:Tlist=CreateList() Type array Field array:String[10] End Type For i=1 To 10 tmp=New array list.addlast(tmp) Next getarray(4).array[2] = "Bla" Print getarray(4).array[2] End '--------------------------------- Function getarray:Array(num:Int) i=0 For tmp = EachIn list i:+1 If i=num Then Return tmp Exit EndIf Next End Function |
||
- Zuletzt bearbeitet von Blitzcoder am Mo, Nov 27, 2006 22:25, insgesamt 2-mal bearbeitet
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du musst die 2 Dimensionen gesondert erstellen
[][] ist ein Array of Array. Das heisst, du musst erst den "äusseren" Array initialisieren. In dem Array ist dann jedes Element wieder ein Array, dass du manuell initialisieren musst. Rein aus gedächtnis Arr:int[][] = new Int[][100] for local i:int = 0 to 99 Arr[i] = new int[100] next |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke, Dreamora.
Das entspricht meinem zweiten Ansatz, nur dass ich statt Int[size][] ein Int[][size] schreiben muss. Die Logik ist mir nicht klar, aber Hauptsache es funktioniert. @Blitzcoder, jo, geht schon, nur ist es in meinem Fall, irgendwie absurd. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Frag mich nicht, warum es [][size] ist und nicht umgekehrt. Bin da anfangs auch reingerannt. Aber man gewöhnt sich irgendwann dran, array of array von aussen nach innen zu erzeugen ^^ | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich finds irgendwie logisch:
Local one:Int [] = new Int [10] Local two:Int[] [] = new Int[] [10] Bei zweidimensionalen Arrays ist der Typ jedes Feldes Int[] statt Int (bei eindimensionalen). So ist die Definition immer new feldtyp [size] ![]() |
||
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn man sich das so betrachtet wird es auf einmal viel logischer. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group