Die wichtigste Überlegung mMn wäre, ob man das Schreiben/Lesen (z.B. mit deinen archaischen Write/Read-Methoden) aller Felder selbst von Hand übernimmt, oder einen Automatismus nimmt. Delphi hat bspw. einen fertigen Automatismus für das Umwandeln deiner Klasse TVeranstaltung (inklusive enthaltene Orte) ins Textformat (JSON).
Damit ginge dann bspw. so etwas:
Delphi-Quellcode:
uses Rest.Json;
procedure TForm10.FormCreate(Sender: TObject);
var
ort: TOrt;
veranstaltung: TVeranstaltung;
veranstaltung2: TVeranstaltung;
begin
ort := TOrt.Create();
ort.bezeichnung := 'Mein Ort';
ort.ortX := 42;
ort.ortY := -99;
veranstaltung := TVeranstaltung.Create();
veranstaltung.name := 'Veranstaltungs-Name';
veranstaltung.karte := 'Karte. Ja.';
veranstaltung.art := 'Obszön';
veranstaltung.station := [ort];
Memo1.Text := TJson.ObjectToJsonString(veranstaltung);
veranstaltung2 := TJson.JsonToObject<TVeranstaltung>(Memo1.Text);
end;
Memo1 als beispielhaften Ersatz für in Dateien schreiben, veranstaltung2 wird neu erstellt aus dem Memo-Inhalt.