Zitat:
Allein das Fehlen der Casting Orgien macht vieles wett.
Ich caste nicht, sondern habe für jedes Objekt seine eigene Liste mit eigenem Get/Put/Index[].
Das habe ich per .inc als Template gelöst. Das war dann mit den echten generischen Listen kompatibel, so dass ich per ifdef von dem Template oder von den echten generischen Listentypen ableiten konnte (zur Abwärtskompatibilität mit alten Versionen).
Die EXE-Datei wird etwas größer, weil der Compiler die verschiedenen Typisierungen Deiner generischen Klassen jeweils vollständig ablegt. Das ist in den letzten Versionen tendenziell besser geworden.
Bei einer einfachen TList kommen pro Verwendung nach meinen Beobachtungen grob ca. 20 KiB in der Releaseversion hinzu.
Was sich glaube ich vor allem geändert hat ist, dass eine TList<TMeineKlasse> bei mehrfacher Deklaration z.B. in Form eines Typs einer Variablen nicht mehrfach als generischer Typ erstellt wurde. Allerdings hatte ich das damals nicht selber getestet, sondern nur gelesen, dass geschrieben wurde, dass das passiert. In Delphi 10.1 ist das auf jedem Fall nicht (mehr) so.