TReader und TWriter für alles ab TPersistent bzw. TComponent ... ALLE Delphis und Lazaruse seit jeher bis immer.
Das wird auch für die
DFM/LFM-Ressource benutzt (binär), wobei und der Stream kann dann auch noch von/nach Text konvertiert werden ... wie bei den aktuelleren DFMs, seit Jahrzehnten.
Ansonsten halt
XML oder JSON von/zur Klasse kapseln.
Delphi-Quellcode:
function Speichern(C: TObject): string;
function Lesen(Text: string): TObject;
Da ist es dann auch egal, was man intern jetzt oder zukünftig in Delphi und/oder Lazarus nutzen wird.
Oder besser noch in eine Basisklasse oder ein Interface die Speicherfunktion und das dann für alle Datenklasse(n) nutzen.