![]() |
Dynamisch erzeuge Labels über Pointer in TList löschen.
Hallo,
ich programmiere momentan für den Infomatikunterricht an einem Bruchrechentrainerprogramm. Ich benutze Delphi 3.0 und bin eigentlich schon so gut wie fertig, aber gerade komme ich nich. Ich habe es bis jetzt folgendermaßen:
Delphi-Quellcode:
später wenn das Label erzeugt wird
var gList:TList;
procedure TForm1.FormActivate...(); begin; gList := TList.Create(); end;
Delphi-Quellcode:
{ Label dynamisch erzeugen }
var neuesLabel:TLabel; neuesLabel := TLabel.Create(self); [...] { Label der Liste hinzufügen } gList.Add (@neuesLabel); Später möchte ich die Labels der Liste wieder löschen:
Delphi-Quellcode:
gList.items[0].free() // das funktioniert allerdings nicht
ShowMessage(gList.items[0].Name); // auch das funktioniert nicht ! Ich bin leider, was Pointer angeht nicht alzu bewandelt und würde mich freuen, wenn ihr mir Tipps geben könntet wo mein Fehler liegt. Viele Grüße Simon |
Re: Dynamisch erzeuge Labels über Pointer in TList löschen.
1. Nimm anstatt der TList eine TObjectList
2. Caste richtig:
Delphi-Quellcode:
TLalbel(gList.items[0]).free();
ShowMessage(TLabel(gList.items[0]).Name); |
Re: Dynamisch erzeuge Labels über Pointer in TList löschen.
Hey,
TObjectList funktioniert leider nicht:
Delphi-Quellcode:
Undefinierter Bezeichner: 'TObjectList'.
|
Re: Dynamisch erzeuge Labels über Pointer in TList löschen.
TObjectList gibt es erst ab Delphi 4. Nutze den 2. Tipp und setz den Typecast richtig.
|
Re: Dynamisch erzeuge Labels über Pointer in TList löschen.
Ich hab es jetzt folgendermaßen probiert:
Delphi-Quellcode:
Jetzt bekomme ich aber immer eine Exception der Klasse EAccessViolation..
gList.Add(@neuesZaehlerLabel);
[...] ShowMessage(TLabel(gTemporaereKomponenten.Items[0]).Name); |
Re: Dynamisch erzeuge Labels über Pointer in TList löschen.
Dann lass das @ weg beim hinzufügen, evtl. auf Pointer casten.
|
Re: Dynamisch erzeuge Labels über Pointer in TList löschen.
es liegt definitiv an dem @ beim hinzufügen. Eine Objectinstanz ist bereits ein Pointer. Und mit dem @ holst du dir einen Pointer auf den Pointer.
|
Re: Dynamisch erzeuge Labels über Pointer in TList löschen.
Hallo,
ich hab das nun geändert, jedoch erhalte ich bei:
Delphi-Quellcode:
Eine Messagebox mit leerem Inhalt
ShowMessage(TLabel(gList.Items[0]).Name);
![]() Viele Grüße Simon |
Re: Dynamisch erzeuge Labels über Pointer in TList löschen.
verständlich! Schließlich weißt du deinem Label nie einen Namen zu. Somit hat es keinen Namen (der Name der Variablen ist nunmal nicht gleich dem Namen der Komponente)
|
Re: Dynamisch erzeuge Labels über Pointer in TList löschen.
:wall: oh man, klar vielen Dank.
Jedoch eins versteh ich noch nicht. Bei machen Labels erhalte ich eine Exception der Klasse EAccessViolation. Bei anderen jedoch nicht, woran liegt das ? Viele Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06: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