Re: TObjectList Löschen
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.
|