![]() |
Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects
Hi,
ich habe eine TObjectList, mit mehreren Objects. Die TObjectList ist per Default auf OwnObjects gesetzt, was auch so bleiben soll. Jetzt möchte ich aber bei einigen Objekten, dass diese sich in bestimmten Situationen selber freigeben, was auch funktioniert. Aber sie müssten auch aus der TObjectList entfernt werden. Logischerweise knallt es beim Clear oder Free, weil die TObjectList beim Aufräumen Objekte entfernen will, die gar nicht mehr da sind. Gibt es dafür eine einfache, elegante Lösung? Wenn nicht, dann muss ich das anders lösen. Wär nur für mich einfacher, wenn es irgendwie ginge. (Während ich das hier schreibe, beschleicht mich das Gefühl, dass das ein blöde Frage ist ;) ) |
AW: Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects
Du muss einfach das Notification-Pattern das auch die VCL tausendfach verwendet implementieren.
|
AW: Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects
Also noch einmal anders formuliert: Das Objekt muss sich bei seinem Owner vorher abmelden.
|
AW: Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects
Zitat:
|
AW: Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects
Das Objekt löscht sich nicht selbst, sondern ruft TList.Delete auf
oder es ruft TList.Extract auf, bevor es sich löscht. Und wenn es alles TComponent sind TComponent.FreeNotification . [edit] das Notification-Pattern :zwinker: ![]() [edit] TComponentList<T>.TNotify.Notification sieht grad irgendwie komisch aus ... ich glaub da hab ich die falsche Version hochgeladen. :shock: Ich glaub das muß
Delphi-Quellcode:
lauten.
if (Operation = opRemove) and not Contains(AComponent) then
Delphi-Quellcode:
if Operation = opRemove then
while FParent.Extract(AComponent) <> nil do ; |
AW: Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects
Ich habe aber keine Components sondern schnöde TObject's. Ich weiß nicht so wirklich, wie ich an die entsprechende TObjectList rankomme (wobei es ja mehr als eine geben könnte). Deswegen hört sich das mit Notification interessant an, hab ich aber noch nicht kapiert,
|
AW: Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects
Dann mußt du das eben selber implementieren.
* deine Objekte müssen die Liste kennen (ihren Owner) * und im Destructor müssen sie sich selber aus der Liste entfernen (Extract) Bei TComponent kann man die Registrierungsfunktionen der VCL benutzen und wenn nicht dann muß man selber was implementieren. |
AW: Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects
Okay, danke.
Ich habe es jetzt so gelöst, in dem ich halt einfach eine Methode der ObjectList aufrufen, die ihrerseits dann die Methode von Object aufruft, und es nach Erfolg auch selber freigibt. Danke euch. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:28 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