Meine Intention hierbei war einfach, dass bei Add nur einmal neuer Speicher für den neuen Punkt angefordert wird. Beim Arbeiten mit dynamischen Arrays kann es meines Wissens nach oft sein, dass das komplette Array im Speicher verschoben wird. Wenn ich einige hundert Punkte habe und beim hinzufügen immer ein setlength mache, finde ich das nicht ganz optimal.
Gut das gleiche hätte auch eine verkette Liste getan, aber die hätte ich komplett implementieren müssen...
So nun hab ich mir auch mal ein wenig Quelltext von TList angesehen.
@littleDave
TPointerList ist so definiert:
Delphi-Quellcode:
MaxListSize = Maxint div 16;
TPointerList = array[0..MaxListSize - 1] of Pointer;
Also wird gleich für die maximale Länge der Liste Speicher für die Pointer reserviert und dieser auch nicht zur Laufzeit verändert.
Beim Löschen werden nicht alle folgenden Elemente zurückgeschoben, sondern nur der letzte gültige Pointer an die leere Stelle kopiert.