One solution may be as follows:
procedure SerializeRecord (RttiRecord : TRttiRecord)
var
AField : TRttiField;
Offset : Integer;
begin
Offset := 0;
for AField in RttiRecord.Fields do
begin
if AField.Offset < Offset then Exit;
Offset := AField.Offset; //store last offset
SerializeField (AField);
end;
end;
. , . - ( wikipedia.org):
type
TVarRec = packed record
case Byte of
0: (FByte: Byte;
FDouble: Double);
1: (FStr: ShortString);
end;
FByte=6
FDouble=1.81630607010916E-0310
FStr=Hello!
, , , , .
, , - , , .