AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

2 dimensionales dynamisches array

Ein Thema von mmk369 · begonnen am 1. Okt 2006 · letzter Beitrag vom 7. Okt 2006
Antwort Antwort
mmk369

Registriert seit: 1. Okt 2006
5 Beiträge
 
#1

2 dimensionales dynamisches array

  Alt 1. Okt 2006, 12:19
Erst mal hallo , bin zwar neu hier, hab aber schon viele Beiträge hier gelesen.

Nun zu meinem Problem...
Mein Code :

Delphi-Quellcode:
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;

 ...
Es ist bestimmt nur ne Kleinigkeit die ich übersehen hab, hoff ich mal

Danke im voraus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: 2 dimensionales dynamisches array

  Alt 1. Okt 2006, 12:40
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
  Mit Zitat antworten Zitat
mmk369

Registriert seit: 1. Okt 2006
5 Beiträge
 
#3

Re: 2 dimensionales dynamisches array

  Alt 1. Okt 2006, 12:47
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 setlength (ARR_Class[Max_X],1 ); Bin mit diesem "Stepmodus" noch nicht so vertraut...

gruss
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: 2 dimensionales dynamisches array

  Alt 1. Okt 2006, 12:54
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
  Mit Zitat antworten Zitat
mmk369

Registriert seit: 1. Okt 2006
5 Beiträge
 
#5

Re: 2 dimensionales dynamisches array

  Alt 1. Okt 2006, 13:14
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
  Mit Zitat antworten Zitat
mmk369

Registriert seit: 1. Okt 2006
5 Beiträge
 
#6

Re: 2 dimensionales dynamisches array

  Alt 1. Okt 2006, 14:57
Habs schlussendlich doch noch hingekriegt
Vielen Dank aber auch !

gruss
  Mit Zitat antworten Zitat
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#7

Re: 2 dimensionales dynamisches array

  Alt 1. Okt 2006, 15:33
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
  Mit Zitat antworten Zitat
mmk369

Registriert seit: 1. Okt 2006
5 Beiträge
 
#8

Re: 2 dimensionales dynamisches array

  Alt 7. Okt 2006, 10:58
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz