![]() |
Re: Tlist wird nicht richtig gefüllt
Moin XXcD.
Bin auch noch nicht fit in diesem Thema, habe aber vor kurzem hier im Forum ein tolles Beispiel für die Verwendung von TList bekommen. Ich will mich selbst mal prüfen, ob ich das einigermaßen verstanden habe und erkläre es an einigen beispielhaften Codefragmenten mit meinen eigenen Worten: 1. Deklaration des Datenobjekts (="Record")
Delphi-Quellcode:
2. Deklaration der eigentlichen Liste in deiner Klasse:
type TMyListItem = class
MyInteger : Integer; MyString : String; end;
Delphi-Quellcode:
3. Instanz der Liste bilden (z.B. im Create der Klasse)
// ..
type TMyClass = class(~~) //.. private FMyList : TList; //.. end;
Delphi-Quellcode:
4. Liste mit Werten füllen
constructor TMyClass.Create(AOwner:TComponent);
begin inherited; //.. FMyList:=TList.Create; //.. end;
Delphi-Quellcode:
5. Zugriff auf einen "Record" der Liste
procedure TMyClass.Add2List;
var ListItem : TMyListItem; begin ListItem:=TMyListItem.Create; // "Record" erzeugen ListItem.MyInteger:=22; // "Record" füllen ListItem.MyString:='ein String'; FMyList.Add(ListItem); // Adresse des "Records" an Liste übergeben end;
Delphi-Quellcode:
6. Löschen eines "Records"
function TMyClass.GetListItem(Index:Integer):TMyListItem;
begin Result:=FMyList[Index] end;
Delphi-Quellcode:
7. Gesamte Liste löschen
procedure TMyClass.DeleteItem(Index:Integer);
begin TObject(FMyList[Index]).Free; // "Record" freigeben FMyList.Delete(Index); // Listenelement löschen FMyList.Capacity:=FMyList.Count; // Listengröße anpassen end;
Delphi-Quellcode:
PS : Mit VCL oder nonVCL sollte das eigentlich nix zu tun haben :spin2:
procedure TMyClass.DeleteList;
var i : Integer; begin for i:=1 to FMyList.Count do TObject(FMyList[i-1].Free; // ALLE "Records" freigeben FMyList.Clear; // Liste löschen end; |
Re: Tlist wird nicht richtig gefüllt
Nimm doch einfach den Code aus dem ersten Post und ersetze TList durch TObjectList (unit contnrs). Wenn Du den Parameter OwnsObjects im Konstruktor nicht änderst, kümmert sich die Liste selbstständig um die Freigabe der enthaltenen Objekte. Einfacher geht es doch nicht mehr.
[edit] Da fehlte ein Buchstäbelchen [/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 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