Da du in deinen records shortstrings (string[n]) benutzt, geht die von mir vorgeschlagene Lösung sehr wohl.
Hat auch den Vorteil, dass du keinen extra Datentyp (die Wrapperklasse für den Record) brauchst:
Delphi-Quellcode:
var
a_record : TMyRecordA;
b_record : TMyRecordB;
c_record : TMyRecordC;
ABuffer : TBytes;
begin
// ein paar werte zuweisen .....
a_record.Details := '#1 bla bla';
a_record.FileName := '#2 bla bla';
a_record.Recordsize := 100;
a_record.FileSize := 222;
b_record.x := 1;
b_record.y := 2;
b_record.z := 3;
// im buffer daten zwischenlagern
ABuffer := TRecordSerializer.ToByteArray<TMyRecordA>(a_record);
// du kannst in diesem Fall das <TMyRecordA> auch weglassen,
// da der Compiler das durch den Typen des übergebenen Parameter erkennt
// Stichwort Type Inference
// löschen oder mit anderen daten arbeiten
a_record.Details := '.....';
a_record.FileName := '----';
a_record.Recordsize := -1;
a_record.FileSize := -2;
// Daten wieder aus dem Buffer zurücklesen
a_record := TRecordSerializer.ToRecord<TMyRecordA>(ABuffer);
// alte daten sind wieder da :-)
memo1.lines.add( a_record.Details);
memo1.lines.add( a_record.Filename);
end;