AGB  ·  Datenschutz  ·  Impressum  







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

TObjectList Löschen

Ein Thema von Scorpion · begonnen am 21. Nov 2005 · letzter Beitrag vom 22. Nov 2005
Antwort Antwort
Scorpion

Registriert seit: 3. Nov 2002
Ort: Flörsheim
154 Beiträge
 
Delphi 5 Professional
 
#1

TObjectList Löschen

  Alt 21. Nov 2005, 16:23
Hallo,

ich habe eine TObjectList, diese heisst hier Array_Knoten, diese enthält Komponenten vom Typ TImage

Jetzt will ich eine Komponente Löschen, das mache ich so:

//Erst suchen nach Komponente, der Sender steht in Variable Knoten vom typ TImage
Array_Knoten[Array_Knoten.IndexOf(Knoten)].Destroy;

Doch irgendwie setzt er den Count nicht runter:

Array_Knoten.Count ist nach der Destroy Funktion immer noch gleich, wieso ?

Gruß Nico
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: TObjectList Löschen

  Alt 21. Nov 2005, 16:38
Ich liebe ja bildliche Beispiele, daher mal meins dazu, was dein Code so macht:

Stell dir vor, du hast eine Kiste mit roten Bauklötzen. Alle sind rot. Nun willst du aber eins blau machen und malst es blau an. Es ist immernoch das selbe Klötzchen was du damals in die Kiste reingetan hast, aber es ist nicht mehr rot. Und die Kiste hat das Klötzchen auch nicht rausgeschmissen sondern behält es immernoch.

Die TObjectList verwaltet nur Instanzenzeiger. Sie kümmert sich weder darum um diese gültig sind, noch ob es überhaupt Objekte sind, die da in ihr liegen. Daher bleibt der Platz für das Objekt auch weiterhin belegt - auch wenn du es freigibst. Du musst das Element aus der Objektliste rauslöschen (siehe dazu die Methode Delete()). Dabei hängt es davon ab ob und was du beim Create der TObjectList angegeben hast. Abhängig davon gibt die Liste das Element selbstständig frei beim entfernen aus der Liste oder entfernt sie einfach nur ohne die Instanz freizugeben. Näheres dazu siehe Hilfe zum Create der TObjectList.
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#3

Re: TObjectList Löschen

  Alt 22. Nov 2005, 08:14
In diesem Fall geht es mit
Array_Knoten.Remove(Knoten); sogar noch simpler. Bei Delete muss man den Index ermitteln, hier geht es direkt.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Grishnak
Grishnak

Registriert seit: 15. Sep 2005
Ort: Neu-Ulm
111 Beiträge
 
RAD-Studio 2009 Arc
 
#4

Re: TObjectList Löschen

  Alt 22. Nov 2005, 09:28
BTW: man sollte von einem Objekt niemals den Destructor direkt (MyObject.Destroy) aufrufen, sondern immer nur MyObject.Free (oder noch besser FreeAndNil(MyObject))!
Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
  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 22:38 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