Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Zugriffsverletzung bei dynamischem Array [done]


Horschdware - Mo 08.03.04 01:05
Titel: Zugriffsverletzung bei dynamischem Array [done]
Folgendes Problem:
Ich habe in einer ini-datei mehrere idents mit recht langen strings. diese sollen nun in ein dynamisches array rein.
ich versuche das folgendermaßen:


Delphi-Quelltext
1:
2:
var map : array of array of integer;
i, maxX, maxY : integer;




Delphi-Quelltext
1:
2:
 SetLength(map,maxx);
  for i:=0 to maxx do SetLength(map[i],maxy);


irgendiwe kann ich nichts ins array schreiben. ich bekomme dauernd zugriffsverletzungen...
was mach ich falsch?


Christian S. - Mo 08.03.04 01:07

Die Indizierung der Elemente eines dynamischen Arrays beginnt bei 0. Das heißt, der höchte zulässige Index eines Arrays mit Länge maxx ist maxx-1. Deine Schleife läuft aber bis maxx, was eines zu weit ist. In der Tutorial-Sparte gibt es auch Tutorial zu Arrays.

Dort steht auch, wie Du die ersten beiden Zeilen kürzer machen kannst:


Delphi-Quelltext
1:
SetLength(map, maxx, maxy)                    


Horschdware - Di 09.03.04 17:32

thx
(und wieder ein glücklicher mensch mehr auf dieser welt ^^)


Raphael O. - Di 09.03.04 17:50

bin mir nicht ganz sicher, aber in der for-schleife solltest du nur bis maxx-1 hoch gehen, da wenn maxx elemente da sind, was bei null anfängt ist der höchste eben maxx-1 8)


rokdd - Di 09.03.04 21:26

@ Fiji-Fighter: genau das gleiche hat Peter auch schon geschrieben! 8)


Robert


Raphael O. - Di 09.03.04 23:08

rokdd hat folgendes geschrieben:
@ Fiji-Fighter: genau das gleiche hat Peter auch schon geschrieben! 8)

ach du meine ****
da denkt man man wäre total verblödet (oder bin ichs tatsächlich?? *g*)
da hilft wohl nur genaueres lesen :(


rokdd - Di 09.03.04 23:25

du solltest halt mal keine sonnenbrille soondern eine lesebrille zu legen!

robert


Raphael O. - Mi 10.03.04 00:00

es geht ja nicht ums erfassen, sondern ums verarbeiten der Daten im Stresszustand :D


Horschdware - Mi 10.03.04 00:27

Ach, doppelt hält besser... ^^