String ist nur ein Zeiger auf einen Speicherbereich, wo die Zeichenkette steht. Wird der Datentyp in einem Record verwendet, macht Delphi anscheinend automatisch einen Shortstring daraus, da es keinen Sinn macht den Zeiger zu speichern. Ein Shortstring hat eine feste Größe von 255 Zeichen.
Du könntest alles nach einander in einem Stream speichern. dabei musst du aber die Größe der Felder und die Größe des Datensatzes mit abspeichern, damit du die Daten wieder trennen kannst.
Allerdings würde ich mir überlegen, ob man nicht besser
XML-Dateien oder gar eine kleine Datenbank nutzt.