Wäre es nicht besser, wenn Dispose hier eine Warnung ausgeben würde, wenn es einen untypisierten Pointer bekommt?
Es wäre besser Dispose gar nicht zu verwenden.
Manchmal kommt man nicht drum rum.
In diesem konkreten Falle allerdings durchaus. Dieser "Ringspeicher" ist nämlich alles andere als ein tatsächlicher Ringspeicher und
TList
zu verwenden ist von der Performance her unter Umständen ziemlich übel. Das
Delete(IrgendwasMittendrin)
kostet hier nämlich sehr viel Zeit.
Alternative wäre es ein
TArray<T>
oder ggfls.
array[n..m] of T
zu verwenden und sich dazu den Start- und den End-Index zu merken. Add/Remove aus dem Buffer beschränkt sich dann auf ein einfaches Einfügen der Daten mit abschließendem
Inc()
bzw.
Dec()
der entsprechenden Indexvariable. Dynamische Speicherreservierungen hättest du dann zur Laufzeit auch komplett keine mehr.