AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TCollectionItem > Ower übergeben, wenn keine Komponente
Thema durchsuchen
Ansicht
Themen-Optionen

TCollectionItem > Ower übergeben, wenn keine Komponente

Ein Thema von Pfoto · begonnen am 18. Nov 2005 · letzter Beitrag vom 18. Nov 2005
Antwort Antwort
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#1

TCollectionItem > Ower übergeben, wenn keine Komponente

  Alt 18. Nov 2005, 19:20
zusammen,

ich schlage mich grad mit Tcollection rum und stoße auf folgendes Problem:

TCollection erzeuge ich zur Laufzeit mit
Collection1:= TCollection.Create(nil) Ich habe erfahren, dass aber TCollectionItem nur automatisch aus dem Speicher entfernt wird, wenn man den Besitzer übergibt.

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
function GetOwer: TPersistent: override Es sei nicht kompatibel oder vom gleichen Typ.

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
Jürgen Höfs
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: TCollectionItem > Ower übergeben, wenn keine Komponen

  Alt 18. Nov 2005, 19:34
Hi,
warum soll denn dein TCollection automatisch aus dem Speicher entfernt werden? Gibt jedenfalls zwei einfache Lösungen:
  • Dein Parent erbt einfach von TComponent statt von TObject
  • Du gibst die TCollection manuell frei

Ok, bin mal gespannt was gegen die Punkte spricht

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#3

Re: TCollectionItem > Ower übergeben, wenn keine Komponen

  Alt 18. Nov 2005, 19:47
Zitat von Der_Unwissende:
  • Dein Parent erbt einfach von TComponent statt von TObject
  • Du gibst die TCollection manuell frei
Gegen den ersten Punkt spricht, dass TCollection im Konstruktor nicht den Owner als Parameter erwartet, sondern einen Nachfahren von TCollectionItem.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: TCollectionItem > Ower übergeben, wenn keine Komponen

  Alt 18. Nov 2005, 20:24
Zitat von Der_Unwissende:
Du gibst die TCollection manuell frei
Collection1 (TCollection) gebe ich auf jeden Fall manuell frei,
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
Jürgen Höfs
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#5

Re: TCollectionItem > Ower übergeben, wenn keine Komponen

  Alt 18. Nov 2005, 20:43
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.
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: TCollectionItem > Ower übergeben, wenn keine Komponen

  Alt 18. Nov 2005, 20:50
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
Jürgen Höfs
  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 18:31 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