Ich glaube, das man hier keine Generics verwenden kann. Das von Dir beschriebene Problem ist eine Schwachstelle von Delphi, nämlich das Vorhandensein von zwei scheinbar identischen Datenstrukturen: statisches vs. ein dynamisches Array.
Bei Dir ist ja nur rein zufällig FRecordDef genauso groß wie SetupRecord, ergo solltest du das eine Array in das andere kopieren, ohne das blöde Move zu verwenden, also warum nicht banal?
Delphi-Quellcode:
FRecordDef[0] := SetupRecord[0];
FRecordDef[1] := SetupRecord[1];
oder allgemein:
Delphi-Quellcode:
Procedure InitializeRecordDef(Var recordDef : TRecordDef);
Var
i : Integer;
Begin
SetLength (recordDef, Length(SetupRecord));
for i:= low(SetupRecord) to High(SetupRecord) do recordDef[i]:=SetupRecord[i];
End;