Elementares Verhalten einer elementaren Klasse. Und ich finde nichts konkretes.
Folgendes: Ich dachte, ich sei schlau und füge einer
TObjectList
ab und an auch mal ein eine Nullreferenz hinzu:
Add(nil)
. Das Anfügen scheint allerdings immer einen
Pack()
-Befehl auszuführen: Die Nullzeiger werden hier wohl herausgeworfen. Dabei waren doch gerade die Teil meiner ausgefuchsten Überlegungen!
Das DocWiki spricht zu
Pack()
:
Zitat:
Löscht alle nil- (Delphi) oder NULL- (C++) Elemente aus dem Array Items.
Mit Pack werden innerhalb des Arrays Items alle Elemente, die keine nil- (Delphi) bzw. keine NULL- (C++) Zeiger sind, nach vorne gebracht. Dabei wird der Wert der Eigenschaft Count auf die Zahl der Elemente verringert, die tatsächlich verwendet werden. Die Methode Pack gibt allerdings den für die nil- (Delphi) bzw. NULL- (C++) Zeiger verwendeten Speicher nicht frei. Hierzu muss die Eigenschaft Capacity auf den neuen Wert von Count gesetzt werden.
In der Hilfe vermisse ich zu
Add()
jetzt den Hinweis, dass
Pack()
überhaupt aufgerufen wird. Insgesamt auch, welche Methoden noch auf ein Pack() zurückgreifen. Und ob ich das vielleicht auch abstellen kann.
Doch Ihr werdet mir sicher weiterhelfen können.