Das ganze Gefrickle mit "dynamischen Records" ist
IMHO der ganz falsche Weg.
Wenn man stattdessen einfach
Klassen verwendet steigt zwar der Overhead für den
Rechner etwas an (ca. 20% mehr Speicherplatzbedarf, ca. 10% mehr Rechenzeit),
aber auf der anderen Seite ergeben sich völlig neue Möglichkeiten.
Man nehme einfach eine Basisklasse (abgeleitet von TPersistent) und erzeuge pro Variante
eine weitere Klasse.
Dann nehme man
TObjectList (als Ersatz für ein Array) und stopfe Objekte der Klassen hinein.
Zum Auslesen muss man einfach mit dem Operator
IS prüfen, zu welcher Klasse das betrachtete Objekt
gehört und dann den Cast-Operator anwenden.
==> kein Rumgemache mit Zeigern, keine schmutzigen Tricks, alles ist sauber, klar und Objektorientiert