Wenn Du Strings in einem Stream speichern willst, musst Du dir vorher die Länge mit ablegen. Da die Strings unterschiedlich lang sein können, je nachdem, was eingeben wurde.
Ich habe dafür solche Funktionen:
Delphi-Quellcode:
procedure WriteStringToStream(stream : TStream; str : String);
var
strLength : integer;
begin
strLength:=length(str);
stream.Write(strLength,SizeOf(strLength));
if strLength>0 then
stream.Write(str[1],strLength*SizeOf(str[1]));
end;
function ReadStringFromStream(stream : TStream) : String;
var
strLength : integer;
hs : String;
begin
result:='';
stream.read(strLength,SizeOf(strLength));
if strLength>0 then
begin
hs := '';
SetLength(hs,strLength);
stream.read(hs[1],strLength*SizeOf(hs[1]));
result:=hs;
end;
end;
Anders wäre es bei ShortString, der String ist dann immer 255 Zeichen lang, diesen könntest Du ohne vorheriges Abspeichern der Länge lesen und schreiben