AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects
Thema durchsuchen
Ansicht
Themen-Optionen

Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects

Ein Thema von Captnemo · begonnen am 9. Mär 2015 · letzter Beitrag vom 9. Mär 2015
Antwort Antwort
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#1

Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects

  Alt 9. Mär 2015, 13:07
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 )
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects

  Alt 9. Mär 2015, 13:12
Du muss einfach das Notification-Pattern das auch die VCL tausendfach verwendet implementieren.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#3

AW: Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects

  Alt 9. Mär 2015, 13:15
Also noch einmal anders formuliert: Das Objekt muss sich bei seinem Owner vorher abmelden.
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#4

AW: Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects

  Alt 9. Mär 2015, 13:17
Notification-Pattern
Hm...klingt interessant. Wenn du mir das noch ein klein wenig besser erläutern könntest, dann könnte ich das mal versuchen.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#5

AW: Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects

  Alt 9. Mär 2015, 13:20
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
http://geheimniswelten.de/artikel/tc...t-auto-remove/

[edit]
TComponentList<T>.TNotify.Notification sieht grad irgendwie komisch aus ... ich glaub da hab ich die falsche Version hochgeladen.
Ich glaub das muß if (Operation = opRemove) and not Contains(AComponent) then lauten.
Delphi-Quellcode:
if Operation = opRemove then
  while FParent.Extract(AComponent) <> nil do ;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 9. Mär 2015 um 13:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#6

AW: Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects

  Alt 9. Mär 2015, 13:29
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,
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#7

AW: Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects

  Alt 9. Mär 2015, 13:32
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#8

AW: Object aus TObjectList soll sich selbst freigeben, trotz OwnObjects

  Alt 9. Mär 2015, 13:44
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.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  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 06:34 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