Hi,
ich habe mir einige der Diskussionen über das Speichern von String (
Unicode) durchgelesen und selbst experimentiert
Delphi-Quellcode:
var astring:unicodestring;
s:tstream;
i:integer;
speichern
i:=length(astring);
s.write(i,sizeof(i));
s.write(pointer(astring)^,i);
lesen
s.Read(i,sizeof(i));
SetLength(astring,i);
s.Read(pointer(f_string)^,i);
das funktioniert sogar!
wiederspricht folgendem Fakt: "Bei
Unicode-Strings (WideString) gibt Length die Byte-Anzahl geteilt durch zwei zurück" (delphi-Hilfe)
also, wie in einigen Beiträgen empfohlen:
Delphi-Quellcode:
var astring:unicodestring;
s:tstream;
i:integer;
speichern
i:=length(astring)*2 ;//*sizeof(char)
s.write(i,sizeof(i));
s.write(pointer(astring)^,i);
lesen
s.Read(i,sizeof(i));
SetLength(astring,i div 2);
s.Read(pointer(f_string)^,i);
das funktioniert auch - nur das die doppelte Menge bytes gespeichert werden - oder wo ist der Denkfehler?
Beide Methoden funktionieren!
MfG
Uwe