Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Umgang mit tList (https://www.delphipraxis.net/38943-umgang-mit-tlist.html)

Fussel 26. Jan 2005 16:00


Umgang mit tList
 
Hallo zusammen!

folgende Situation:
habe eine große Liste in der ich diverse Daten speichere, und zu jedem der Listenelemente brauche ich noch zwei weitere einfache Listen um strings zu speichern. Das sieht dann folgendermaßen aus:


Delphi-Quellcode:
  tEleZeiger = ^tElement; //Liste der Elemente
  tElement = record
              Name        :string;
              Gruppe      :integer;
              next        :tEleZeiger;
              Inhalt      :tlist;
              Gruppenliste :tlist;
              Zahl        :integer;
             end;
Hatte die beiden Unterlisten Inhalt und Gruppenliste ursprünglich selbst organisiert, was auch funktioniert hat. Da ich sie aber kombinieren ,sortieren, und doppelte Elemente löschen muß wollte ich auf den Typ tList zugreifen, der diese Methoden schon implementiert hat.

Ich erzeuge also einen Zeiger

Delphi-Quellcode:
  var Zeiger:^string;
  new (Zeiger);
und versuche ihn in die liste einzuhängen:

Delphi-Quellcode:
 Neuelement^.Inhalt.add (Zeiger); (Neuelement ist vom Typ tEleZeiger, s.o.)
Der compiler akzeptiert es, das Programm aber bricht wegen einer Zugriffsverletzung ab. Kann es sein, daß ch die Liste erst mit .create erzeugen muß? Wie ich es auch anstelle, es kommt nur Murks dabei heraus...



Vielen Dank

Manuel

[edit=Admin]Code in Delphi-Tags gesetzt. Künftig bitte selber machen. Danke. ;-) Mfg, Daniel[/edit]

Muetze1 26. Jan 2005 16:05

Re: Umgang mit tList
 
Moin!

Ja, da TList eine Klasse ist musst du diese auch vorher instanziieren und beim entfernen des Elements auch wieder freigeben.

MfG
Muetze1

Fussel 26. Jan 2005 16:17

Re: Umgang mit tList
 
Hi Mütze,

wie genau soll ich das anstellen?
Habe es bislang so versucht:

new (NeuElement);
Neuelement.Inhalt.create;

Dann bricht das Programm aber genau an dieser Stelle ab und erzählt mir etwas von wegen EaccessViolation.

komme so nicht weiter...

Manuel

Nightshade 26. Jan 2005 16:41

Re: Umgang mit tList
 
Delphi-Quellcode:
new (NeuElement);
Neuelement.Inhalt := TList.Create;

Fussel 26. Jan 2005 16:46

Re: Umgang mit tList
 
Nightshade, du bist definitiv mein Held!

Vielen Dank, es klappt

manuel

Muetze1 26. Jan 2005 22:10

Re: Umgang mit tList
 
Moin!

Sorry, ich dachte das wäre klar, da du schon explizit nach dem "richtigen" Fehler fragtest und auch gleich die richtige Lösung geschrieben hattest. Es klang für mich nur nach einer Bestätigungsfrage zu deiner Vermutung...

Nächstes mal dann mit Code... ...Hauptsache ist es aber auch verstanden hast warum und wieso es so heissen muss...

MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 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 by Thomas Breitkreuz