Wie jaenicke es schon sagte, mach es so, wie es überall funktioniert und schmeiß alles Andere raus.
Delphi-Quellcode:
if SaveString <> '' then
FS.Write(Pointer(SaveString)^, Length(SaveString) * SizeOf(AnsiChar));
Aber grundsätzlich funktioniert auch dieser Code mit AnsiString und TBytes, wobei SizeOf(AnsiChar) überall passt, da ja überall
ANSI drin ist,
und da es immer 1 ist, kann man es natürlich auch weglassen.
SizeOf(Byte)
ergibt das Selbe, ist aber nunmal sinnlos.
Und warum es beim IF mit dem Array nicht geht, sollte klar sein, was man auch über Length lösen könnte, oder man lässt es einfach weg und schreibt dann halt auch die 0 Bytes.
Nja, bezüglich TBytes würde ich dann natürlich auch die Überladung für TBytes verwenden, welches der TStream schon länger besitzt.
Und wie gesagt, es gibt alternativen wie TFile.WriteAll* und TStringStraem, mit denen man sich garnicht um die Straem-Behandlung kümmern muß.