(Gelöst) Problem mit dem Auslesen mehrdimensionaler Arrays
Übersicht

KarlosKojoteBetreff: (Gelöst) Problem mit dem Auslesen mehrdimensionaler Arrays |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo.
Ich versuche grade Tutorials die eigentlich für Flash sind in BlitzMax anzuwenden. Hierbei habe ich allerdings zwei Probleme. 1. Wieso ist das Array +1 größer als es wirklich ist, so das man immer -1 bei der For...Next Schleife anwenden muss? 2. Wieso bekomme ich eine Fehlermeldung wenn ich das ganze Ausführe? Ich müsste in den Schleifen -3 angeben, dann funktioniert es, was ja aber nicht der Sinn sein sollte, da muss ich ja irgendwas falsch gemacht haben!? Kann mir jemand erklären was ich falsch gemacht habe? Vielen Dank ![]() Code: [AUSKLAPPEN] Local myMap:Int[][] = [ [1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 0, 1], [1, 0, 1, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 1, 0, 1], [1, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 1, 1] ] Local mapWidth:Int = myMap[0].length Local mapHeight:Int = myMap.length Print mapWidth+":"+mapHeight For y = 0 To mapHeight-1 For x = 0 To mapWidth-1 Print myMap[x][y] ' Print x+":"+y Next Next |
||
- Zuletzt bearbeitet von KarlosKojote am Mo, Nov 01, 2010 18:03, insgesamt einmal bearbeitet
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Benutze einfach Until statt to ![]() Code: [AUSKLAPPEN] For y = 0 Until mapHeight
For x = 0 Until mapWidth Print myMap[x][y] ' Print x+":"+y Next Next |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
M2M |
![]() Antworten mit Zitat ![]() |
---|---|---|
In der Programmierung ist es üblich, anders als im echten Leben, von 0 an zu zählen. Darum enthält das Array Kisten[3] die Werte 0,1,2,3 und hat somit 4 Einträge (0 - 3). | ||
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, hat es nicht.
Array-Indizes gehen von 0 bis Arraygröße-1. |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
M2M |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ach, und wieso führt dann folgender Code
Code: [AUSKLAPPEN] Local array[3] For i = 0 To 3 Print array[i] Next zur Ausgabe: 0 0 0 0 ? |
||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich bekomme die "Ausgabe" "Unhandled Exception: Attempt to index array element beyond array length".
Nun gibt es zwei Möglichkeiten, wie du auf dein Ergebnis kommst: 1. Du bist nicht bei BlitzMax. 2. Der Debugger ist deaktiviert. Edit: Des Rätsels Lösung: Du hast die Indizes vertauscht. BlitzMax: [AUSKLAPPEN]
mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
- Zuletzt bearbeitet von mpmxyz am Mo, Nov 01, 2010 12:20, insgesamt einmal bearbeitet
n-Halbleiter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ähm... BMax und BB haben unterschiedliches Arrayverhalten. Dein Code, M2M, ist für BB. In BMax ist ein Array[3] 3 Einträge groß, und geht nicht einschließlich bis zum Index 3, wie in BB. So zur Info. ![]() EDIT: @mpmxyz, dann würde aber nicht zwangsläufig 0 als letztes Ergebnis herauskommen. Bei mir kommt da "77333713" raus. |
||
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit Ploing! Blog "Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935) |
![]() |
DaysShadow |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Code funktioniert, auch mit SuperStrict, aber nur im Release-Modus.
Man kann die 3 auch gegen eine 100 austauschen und es geht, es wird einfach nur der Inhalt des Pointers abgefragt und den schiebt man halt einfach weiter wenn man einen höheren Index abfragt. Gibt dann halt kauderwelsch^^ BlitzMax: [AUSKLAPPEN] SuperStrict |
||
Blessed is the mind too small for doubt |
KarlosKojote |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Achso ok, Array.length gibt also immer die tatsächliche Größe aus und deswegen muß ich Array.length-1 für den Index nehmen... Klingt auch logisch, aber darauf wär ich so jetzt trotzdem nicht gekommen *g*
@DaysShadow: Das führt mit "Glück" dann wahrscheinlich, wie in C, zu den faszinierensten Ergebnissen xD @mpmxyz: Danke so funktioniert es. Ich habs in der Tat wirklich nur verwechselt. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group