TCollectionItem > Ower übergeben, wenn keine Komponente
:hi: zusammen,
ich schlage mich grad mit Tcollection rum und stoße auf folgendes Problem: TCollection erzeuge ich zur Laufzeit mit
Delphi-Quellcode:
Ich habe erfahren, dass aber TCollectionItem nur automatisch aus dem Speicher entfernt wird, wenn man den Besitzer übergibt.
Collection1:= TCollection.Create(nil)
Leider meckert der Compiler und sagt, dass meine Elternklasse nicht vom Typ TComponent sei. Wenn ich alles von "TComponent" mit "TObject" ersetzte, gibt es einen Fehler bei der Funktion
Delphi-Quellcode:
Es sei nicht kompatibel oder vom gleichen Typ.
function GetOwer: TPersistent: override
Von TPersistent hatte ich vorher noch nichmal gehört... Soll ich einfach nun im Detroy-Teil von TCollection das untergeordete TCollectionItem freigeben? Es würde doch keine Nachteile bringen, wenn ich die Übergabe eines Owners im Create-Teil übergehe und das Löschen manuell mache, oder? Bedanke mich schonmal für Eure Hilfe Gruß Pfoto |
Re: TCollectionItem > Ower übergeben, wenn keine Komponen
Hi,
warum soll denn dein TCollection automatisch aus dem Speicher entfernt werden? Gibt jedenfalls zwei einfache Lösungen:
Ok, bin mal gespannt was gegen die Punkte spricht Gruß Der Unwissende |
Re: TCollectionItem > Ower übergeben, wenn keine Komponen
Zitat:
|
Re: TCollectionItem > Ower übergeben, wenn keine Komponen
Zitat:
aber es gibt ja noch die eigentliche Itemliste, nämlich TCollectionItems. TCollectionItems braucht man ja bei Freigabe von Collection1 nicht expliziet freigeben, sondern dies übernimmt doch Collection1 selbst -- aber nur, so wie ich verstanden habe, -- wenn man Collection1 als Ower and TCollectionItems über gibt. Und das funktioniert nicht, weil ich Keinen Typ TComponent besitze, sondern ein Klasse von TObject. Ich hoffe, ich habe es so verständlicher erklärt... Gruß Pfoto |
Re: TCollectionItem > Ower übergeben, wenn keine Komponen
Sorry, hab wohl etwas falsch gelesen.
Also, wenn du eine TCollection verwendest und dort die Items mit Add hinzufügst, dann werden diese auch mit der TCollection entfernt. Steht auch in der Delphi-Hilfe. Die Methode Clear von TCollection gibt alle enthaltenen TCollectionItems frei. Und die Methode Destroy von TCollection ruft Clear auf. Also wird dein Speicher bei der Verwendung von TCollection automatisch freigegeben (also der der TCollectionItems). Gruß Der Unwissende PS Hoffe nicht wieder was falsch gelesen zu haben. |
Re: TCollectionItem > Ower übergeben, wenn keine Komponen
Ah! TCollectionItems wird also unabhängig davon freigeben, ob man TCollection als Owner übergeben hat.
Dann habe ich das falsch gelesen. Dank und Gruß Pfoto |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 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