Du kannst auch
.Position := 4933 * x;
setzen,
aber wenn du der Reihe nach Speicherst und ausliest, brauchst du dieses nicht setzen.
Die relative Position zum Dateiende stimmt ja nur, wenn die Dateigröße korrekt ist.

Kann sich die Size des Streams trotz fester Feldlängen ändern? (Dies würde das ganze erklären).
Nein, es sei denn du machst was falscht ... z.B. unterschiedliche Größen des Memory-Streams.
Ich würde an deiner Stelle vor dem Speichern die Größe des MemoryStreams prüfen
Delphi-Quellcode:
is MS.Size <> 4933 then
Fehlermeldung;
Und vor dem Auslesen, bzw. vor/nach dem Speichern die Dateigröße, sowie die aktuelle Position.
Delphi-Quellcode:
if (FS.Size mod 4933 <> 0) or (FS.Position mod 4933 <> 0) then
Fehlermeldung;
Ein Therapeut entspricht 1024 Gigapeut.