@Bummi: Wie am Start gesagt - 'ne Fingerübung - wollte nur ein allg. Object probieren, welches Daten in eine Stream speichert - also etwa ein Integer, einen String, ein Byte-Array und eben falls nötig - eine Stringliste.
Delphi-Quellcode:
procedure tstorepersistent_UA.writeotherdata(astream: tstream);
var i:integer;
a:char;
begin
astringlist.SaveToStream(astream);
a:=#0;
astream.Write(a,sizeof(a));
astream.write(F_int,sizeof(F_int));
astream.write(i,sizeof(i));
astream.write(pointer(astring)^,i);
astream.Write(f_maxblocksize,sizeof(f_maxblocksize));
astream.Write(abytearray^,maxblocksize);
end;
procedure tstorepersistent_UA.readotherdata(astream: tstream);
var i:integer;
begin
astringlist.Clear;
astringlist.LoadFromStream(astream);
astream.Read(F_int,sizeof(f_int));
astream.read(F_char,sizeof(F_char));
astream.Read(i,sizeof(i));
SetLength(F_string,i div sizeof(char));
astream.Read(pointer(f_string)^,i);
FreeMem(abytearray);
astream.Read(F_maxblocksize,sizeof(maxblocksize));
getmem(abytearray,maxblocksize);
astream.Read(abytearray^,maxblocksize);
end;
Ohne eine Stringliste funktioniert das. Mit Stringliste kommt's zu Störungen.
Speichere ich z.B. obiges 2 mal und lade es auch 2 mal, dann ist die zweite geladene Stringliste leer (count=0) - womit Du wohl recht hast -das erste Lesen führt schon zum Ende des Streams, auch wenn irgendwo #0 steht und egal, ob ich die Liste am Anfang oder am Ende des Objects schreibe und lese - so sieht es jedenfalls beim Probieren aus.
Mfg Uwe