Ich bin gerade dabei das ich einen WideString in einen Stream speichern will. Bei einem normalen String würde ich das so machen:
Delphi-Quellcode:
var LSize: Integer;
begin
LSize := Length(NormalerString); //Länge des Strings ermitteln
Stream.Write(LSize, SizeOf(LSize)); //Länge des Strings abspeichern (fürs Laden benötigt)
Stream.Write(NormalerString[1], LSize); //String in Stream schreiben
bei einem WideString würde ich das jetzt so machen
Delphi-Quellcode:
var LSize: Integer;
begin
LSize := Length(TheWideString) * 2; //Länge des Strings ermitteln
Stream.Write(LSize, SizeOf(LSize)); //Länge des Strings abspeichern (fürs Laden benötigt)
Stream.Write(TheWideString[1], LSize); //String in Stream schreiben
Mich stört jetzt bei dieser Variante das "*2" weil es ja irgendwann mal passieren kann das unter windows ein Zeischen eines WideStrings dann 4 Byte lang ist. Wie würde ihr das machen um die 2 nicht fest rein zu schreiben?
Ich hab schon überlegt zu schreiben
LSize := Length(TheWideString) * SizeOf(WideChar);
Wie würdet ihr das machen?