du könntest das ganze höchstens mit einer Beschreibung kombinieren die du dann zur Laufzeit auswertest.
Hast du Beispielsweise folgenden Record:
Delphi-Quellcode:
TUnknwon = packed record
wert1: Byte;
wert2: Byte;
end;
so müsstest du eigentlich erstmal nur wissen das er 2 Byte groß ist um die Daten einzulesen. Wie die 2 Byte zu interpretieren sind ist erstmal egal. Als nächstes kommt dann die Beschreibung welche dir sagt wie die Daten zu interpretieren sind. Diese müsstest du ja auch irgendwo ablegen.
Um das ganze einigermaßen brauchbar umzusetzen bietet sich ein eigenes Object an welches eine Liste von Werten hat.
Jeder Listeneintrag muss dann den Typ beinhalten und den dazugehörigen Wert.