Hi zusammen
Ich behaupte mal: Hoika hat recht. Das Embarcadero Wiki zu
TObjectlist.Ownsobject:
Zitat:
Ermittelt oder setzt den Eigentümer des Objekts.
OwnsObjects ermittelt oder legt fest, ob die Liste Eigentümer der Objekte in der Liste ist. Wenn die Liste zum Zeitpunkt des Entfernens des Eintragsobjekts aus der Liste Eigentümer der Einträge ist, wird das Eintragsobjekt freigegeben. Create initialisiert diese Eigenschaft.
Es stellt sich jetzt halt die Frage, was der fett formatierte Satz nun wirklich heisst. Tatsache ist, dass bei einem Delete eines bestimmten Eintrags dieser aus der Liste entfernt wird, und zwar unabhängig davon, ob OwnsObjects nun False oder True ist. Nun suggeriert aber der bewusste Satz, dass bei True das Eintragsobjekt freigegeben wird, also ein "Eintragsobject.Free" durchgeführt wird.
Technisch wäre dies wohl möglich, wenn die Objectlist alle damit zusammenhängenden Propertys und deren Felder aktualisieren würde. Nebst dem Count-Property würde dies wohl auch Capacity betreffen. Würde...
Aber:
An dieser Stelle wollte ich eigentlich die Stelle aus dem Embarcadero Wiki zitieren, die ich heute morgen gelesen hatte, jetzt aber nicht mehr finden kann. Da wurde darauf hingewiesen, dass man das Ereignis OnNotify verwenden solle, um das Objekt nicht nur aus der Liste zu entfernen, sondern wirklich freizugeben/zu zerstören. Gefunden habe ich stattdessen:
Mein Fazit: Beide, hoika sowohl peterbelow haben recht - die nicht generische Liste verlangt einfach etwas mehr Handarbeit.
Wie das nun wirklich ist, kann nur ein Studium / durchsteppen durch die Sourcen geben.
Gruss
Delbor