![]() |
2 dimensionales dynamisches array
Erst mal hallo , bin zwar neu hier, hab aber schon viele Beiträge hier gelesen.
Nun zu meinem Problem... Mein Code :
Delphi-Quellcode:
Es ist bestimmt nur ne Kleinigkeit die ich übersehen hab, hoff ich mal :roll:
type
TARR_Class = record Obj : TLabel; CL : string; end; ... var ARR_Class : array of array of TARR_Class; ... if CLExists = -1 then begin Max_X := length (ARR_Class); setlength (ARR_Class, MAX_X+1 ); setlength (ARR_Class[Max_X],1 ); end else begin Max_X := length (ARR_Class); //Hier meldet der debugger einer EAccessViolation Max_Y := length (ARR_Class[MAX_X]); setlength (ARR_Class[CLExists], Max_Y+1); end; ARR_Class [Max_X, MAX_Y-1].CL := FORMAT; ARR_Class [Max_X, MAX_Y-1].obj := lblText; end; ... Danke im voraus |
Re: 2 dimensionales dynamisches array
Herzlich willkommen in der Delphi-PRAXiS, mmk369.
Ich will garnicht glauben, dass an der von dir bezeichneten Stelle eine AV auftritt. Aber warum führst du MAX_X und MAX_Y nach, wenn du doch jederzeit mit High(ARR_Class) auf das letzte Item zugreifen kannst? Freundliche Grüße vom marabu |
Re: 2 dimensionales dynamisches array
Ja richtig eigentlich müsste ich das ja nicht machen mit dem MAX_X un MAX_Y, aber das ist doch bestimmt nicht die Lösung des Problems oder doch ? Jedenfalls was die Fehlermeldung angeht, denke das es dann in der vorherigen Zeile passiert ist
Delphi-Quellcode:
Bin mit diesem "Stepmodus" noch nicht so vertraut...
setlength (ARR_Class[Max_X],1 );
gruss |
Re: 2 dimensionales dynamisches array
Aber sicher ist das der Fehler gewesen, denn du hast ja in einem vorherigen Durchlauf MAX_X auf einen um 1 zu hohen Wert gesetzt, indem du Length(ARR_Class) zugewiesen hast - der höchste Index ist nun einmal Pred(Length(ARR_Class)) oder gleich High(ARR:Class).
marabu |
Re: 2 dimensionales dynamisches array
Also hab jetz alle Max_X mit hight(ARR_Class) ersetzt, das problem tritt trotzdem immer dann wieder auf, wenn ich die 2te Dimension um 1 erweitern will "setlength (ARR_Class [high (ARR_Class)],1 );" hab noch eine if schleife dazu gemacht falls am anfang das high(ARR_Class) -1 ist, dann wird die länge des arrays einfach auf 1 gesetzt, denn -1 + 1 ist ja 0, denn sonst würd ich ja beim ersten mal wo ich das array erweitere die länge 0 zuweisen...
gruss |
Re: 2 dimensionales dynamisches array
Habs schlussendlich doch noch hingekriegt :thumb: :lol:
Vielen Dank aber auch ! gruss |
Re: 2 dimensionales dynamisches array
Hi mmk369,
könntest du bitte die Lösung deines Problems noch posten. Für alle Leute, die die Suche benutzen und ein ähnliches Problem haben ist es nicht gerade sinnvoll, wenn sie nur wissen, dass du das Problem gelöst hast. Schreib einfach noch kurz, wo der Fehler war und wie du ihn behoben hast. mfg, Martin |
Re: 2 dimensionales dynamisches array
Sorry das es so lange gedauert hat, hatte ich vergessen die Lösung hinzuschreiben. ALso das Problem war tatsächlich das, dass ich durch "length" halt einen zu weit vorn war, mit "high" wird ja bei -1 angefangen und bei length mit 0. Dadurch wurde versucht auf eine Stelle im Array zuzugreifen wo es noch gar kein Eintrag gibt.
Gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz