AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Dynamisch erzeuge Labels über Pointer in TList löschen.
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamisch erzeuge Labels über Pointer in TList löschen.

Ein Thema von Cmon · begonnen am 23. Mai 2007 · letzter Beitrag vom 23. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
Cmon

Registriert seit: 23. Mai 2007
9 Beiträge
 
#1

Dynamisch erzeuge Labels über Pointer in TList löschen.

  Alt 23. Mai 2007, 15:15
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:
var gList:TList;


procedure TForm1.FormActivate...();
begin;
   gList := TList.Create();
end;
später wenn das Label erzeugt wird
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
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Dynamisch erzeuge Labels über Pointer in TList löschen.

  Alt 23. Mai 2007, 15:18
1. Nimm anstatt der TList eine TObjectList

2. Caste richtig:

Delphi-Quellcode:
TLalbel(gList.items[0]).free();

ShowMessage(TLabel(gList.items[0]).Name);
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Cmon

Registriert seit: 23. Mai 2007
9 Beiträge
 
#3

Re: Dynamisch erzeuge Labels über Pointer in TList löschen.

  Alt 23. Mai 2007, 15:23
Hey,

TObjectList funktioniert leider nicht:
Undefinierter Bezeichner: 'TObjectList'.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Dynamisch erzeuge Labels über Pointer in TList löschen.

  Alt 23. Mai 2007, 15:25
TObjectList gibt es erst ab Delphi 4. Nutze den 2. Tipp und setz den Typecast richtig.
  Mit Zitat antworten Zitat
Cmon

Registriert seit: 23. Mai 2007
9 Beiträge
 
#5

Re: Dynamisch erzeuge Labels über Pointer in TList löschen.

  Alt 23. Mai 2007, 15:30
Ich hab es jetzt folgendermaßen probiert:
Delphi-Quellcode:
gList.Add(@neuesZaehlerLabel);

[...]

ShowMessage(TLabel(gTemporaereKomponenten.Items[0]).Name);
Jetzt bekomme ich aber immer eine Exception der Klasse EAccessViolation..
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Dynamisch erzeuge Labels über Pointer in TList löschen.

  Alt 23. Mai 2007, 15:47
Dann lass das @ weg beim hinzufügen, evtl. auf Pointer casten.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Dynamisch erzeuge Labels über Pointer in TList löschen.

  Alt 23. Mai 2007, 16:07
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Cmon

Registriert seit: 23. Mai 2007
9 Beiträge
 
#8

Re: Dynamisch erzeuge Labels über Pointer in TList löschen.

  Alt 23. Mai 2007, 16:33
Hallo,

ich hab das nun geändert, jedoch erhalte ich bei:       ShowMessage(TLabel(gList.Items[0]).Name); Eine Messagebox mit leerem Inhalt

http://home.arcor.de/ewe57/ShowMessage.jpg

Viele Grüße
Simon
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Dynamisch erzeuge Labels über Pointer in TList löschen.

  Alt 23. Mai 2007, 16:37
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)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Cmon

Registriert seit: 23. Mai 2007
9 Beiträge
 
#10

Re: Dynamisch erzeuge Labels über Pointer in TList löschen.

  Alt 23. Mai 2007, 17:41
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:32 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