2Dimensionale Arrays

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

The_Nici

Betreff: 2Dimensionale Arrays

BeitragSa, März 29, 2008 13:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ui, da hat sich einer an BlitzMax gesetzt!
Nun, ich wollt ein 2Dimensionales Array mit Daten aus einer Datei füttern, jedoch sagt mir BlitzMax ich würde es mit zuvielen Daten stopfen.

Zitat:

Unhandled Exception:Attempt to indes array element beyond array length


Der Code:
Code: [AUSKLAPPEN]

SuperStrict
'Graphics(800,600,32,60)
Global map:Int[32,24]

Global mapfile:TStream=ReadFile("testmap.dat")
Local y:Int
Local x:Int
For y=0 To 24
   For x=0 To 32
      map[x,y]=ReadInt(mapfile)
   Next
Next
CloseFile mapfile
For y=0 To 24
   For x=0 To 32
      'DrawText(map[x,y],x+3,y+3)
      Print map[x,y]
   Next
Next

WaitKey()
End


Wohl ein einfaches Anfängermisverständnis, wäre über Hilfe also ziemlich froh. Smile
 

ChristianK

BeitragSa, März 29, 2008 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Arrays in BlitzMax haben 1 Element weniger als in Blitz3D, weil dort anders gezählt wird. Dein Array hat genau die Anzahl an Elementen, die du angibst. Bei 32 geht das Array von 0 bis 31, bei 24 entsprechend von 0 bis 23.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

FOODy

BeitragSa, März 29, 2008 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst beim For Until verwenden ( Oder die "To-Zahl" um 1 verringern) , da eine indexierung eines Arrays mit 0 beginnt.
Also wenn du "Local i:Int[8]" machst hast du eine "reichweite" von 0 bis _einschließlich_ 7.

Gruß,
FOODy


EDIT:
Mist 3ns zu langsam :(
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB

The_Nici

BeitragSa, März 29, 2008 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke an euch beide, klappt jetzt. Smile

StarGazer

BeitragSa, Apr 05, 2008 15:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich löse das immer so daß ich alle Arrays beim erstellen um einen mehr erstelle. Dann gibs später auch keinen Ärger mit den Forschleifen.
Immer For x to x-1 zu tippen kann auch nerven.

Code: [AUSKLAPPEN]
breite = 10
höhe =  5

Global Map[breite+1,höhe+1]


'dann gibs hier so auch nie Ärger :)
For x = 0 to breite
For y = 0 to höhe
       Map[x,y] = Rand(0,255)
Next
Next

Suco-X

Betreff: ....

BeitragSa, Apr 05, 2008 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:

Ich löse das immer so daß ich alle Arrays beim erstellen um einen mehr erstelle. Dann gibs später auch keinen Ärger mit den Forschleifen.
Immer For x to x-1 zu tippen kann auch nerven.


Schon von Until gehört, das wurde extra dafür eingeführt.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group