String?
Gerade das ist ein böser Zeigertyp, da der intern nur aus einem Zeiger besteht, welcher auf die eigentlichen Stringdaten zeigt.
Und was für ein Array?
Nur der
ShortString
und die kurzen Strings mit Längenangabe
String[123]
(nicht mit Zeichenindex, sondern als
Typ) ist da anders, da Dieser intern ein statisches
Array[1..123] of AnsiChar
ist (mit einem Längen-Byte am Anfang).
Lange Strings (AnsiString, WideString, UTF8String, UnicodeString usw.), dynamische Arrays (die, welche man mit SetLength bearbeiten kann) und Variants darfst du hier nicht verwenden, wenn der Record "direkt" in gespeicher/übertragen/geladen werden soll.