Sieht für mich nach einem Fall von varianten Records aus.
Einfach mal googlen. Sieht nur auf den ersten Blick merkwürdig aus, ist aber ziemlich einfach.
Dürfte in deinem Fall etwa so aussehen:
Delphi-Quellcode:
tMyArray = Array [0..7] of Byte;
tMyFloatRec = record
Float1 : Single;
Float2 : Single;
end;
tMyRec = Record
case boolean of
true : (MyArr : tMyArray);
false : (myFloatRec : tMyFloatRec);
end;
Ist natürlich ungeprüft und da es bei mir schon ziemlich lange her ist, dass ich das verwendet habe, bitte ich im Nachsicht, wenn es nicht ganz korrekt ist.
Ich erinnere mich gerade, dass ich damals noch einen Compiler-Schalte setzen musste, für ausgerichtete Felder. Keine Ahnung, ob das heute auch noch notwendig ist.