Dein Sizeof(DataAray[x]) dürfte unabhängig von x immer 16 liefern. so groß ist eben ein Variant. Und in den 16 Bytes des Variant steht dann der Typ mit dem das Variant derzeit belegt ist und je nach Typ die entspr Daten.
Kann man ein Variant eigentlich mit einem Record direkt füllen?
Edit: Hier ist ja noch einiges anderes schief.
DataArray[0]:=TZeile_1_nach04;
Und Recods kann man tatsächlich nicht einem variant zuordnen (Delphi 7).
Den Ansatz solltest du besser wegwerfen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.