Ich glaub, du möchtest so etwas:
Delphi-Quellcode:
type
TRecordSerializer = class
class function ToByteArray<T: record>(const Value: T): TBytes; static;
class function ToRecord<T: record>(const Value: TBytes): T; static;
end;
class function TRecordSerializer.ToByteArray<T>(const Value: T): TBytes;
begin
SetLength(Result, SizeOf(T));
Move(Value, Result[0], SizeOf(T));
end;
class function TRecordSerializer.ToRecord<T>(const Value: TBytes): T;
begin
Move(Value[0], Result, SizeOf(T));
end;
Denke aber bei diesem Ansatz auf jeden Fall daran, dass du damit keine managed types (z.B. string) behandeln kannst. Denn in dem Record befindet sich in diesem Fall nur ein Pointer auf den string.