![]() |
Delphi-Version: 2010
Ein Object in mehreren Listen
Hallo erst mal,
wie der Titel schon sagt, möchte ich ein Object in verschiedenen Listen verwalten. Wie das Beispiel zeigt:
Delphi-Quellcode:
Solange ich kein Object erzeuge gibt es natürlich kein Problem, sobald aber mindestens ein neues Object erstellt wurde gibt es einen Fehler, sobald das Programm geschlossen wird. Ist ja eigentlich auch logisch, da ich das gleiche Object 2mal freigeben möchte.
procedure TForm1.Button1Click(Sender: TObject);
begin list1.Add(TObject.Create); list2.Add(list1.Last); end; procedure TForm1.FormCreate(Sender: TObject); begin list1 := TObjectList.Create; list2 := TObjectList.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin list1.Free; list2.Free; end; Wie kann ich also diese Problem umgehen? Gruß MondiBob |
AW: Ein Object in mehreren Listen
Es darf nur eine Liste die Objekte besitzen (.OwnsObjects)
|
AW: Ein Object in mehreren Listen
Vielen Dank, funktioniert perfekt :)
|
AW: Ein Object in mehreren Listen
Kann man den Destruktor eigentlich irgendwie abbrechen?
Also sowas wie:
Delphi-Quellcode:
Klar, SOO natürlich nicht. Aber irgendwie anders?
Destruktor TMyObject.Destroy;
Begin Dec (fRefCount); if fRefCount>0 Then Abort; End; |
AW: Ein Object in mehreren Listen
Ich habe das zwar noch nie versucht bzw. gebraucht, aber möglicherweise so:
Delphi-Quellcode:
Nur: wozu soll das gut sein, wenn ich Free aufrufe, gehe ich davon aus, dass das Objekt danach auch garantiert freigegeben ist.
destructor TDings.Destroy;
begin if AllesOK then begin MachSauber; inherited; end; end; |
AW: Ein Object in mehreren Listen
Dazu müsstest du dir eine eigene Methode schreiben, die dann .Free aufruft. Der Destructor zerstört im Normalfall auch das Objekt, wenn kein inherited aufgerufen wird. Also das Objekt ist dann wirklich weg.
Bernhard |
AW: Ein Object in mehreren Listen
Bezüglich dem Destroy ... schaut euch mal ein Singleton-Pattern an.
|
AW: Ein Object in mehreren Listen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 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 by Thomas Breitkreuz