Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#11

AW: tstringlist.loadfromstream liest mehr ein, als es soll

  Alt 27. Nov 2011, 18:56
du bist auch wenn #0 vorkommt faktisch am Ende des Streams .... es wird nur nicht mehr dargestellt
Delphi-Quellcode:

var
ms:TStringStream;

procedure TForm1.Button1Click(Sender: TObject);
var
 s:String;
begin
    s := '连接测试'+ #13#10 +'Test'+#0;
    ms.WriteString(s);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   ms.Position := 0;
   ListBox1.Items.LoadFromStream(ms,TEncoding.Unicode);
   Caption := IntToStr(ms.Position) + ' - ' + IntToStr(ms.Size)
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 ms := TStringStream.Create('',TEncoding.Unicode);
end;
Mir ist noch nicht ganz klar was genau Du vorhast, ich würde das was ich verstanden habe über eine Klasse mit einer Liste von Streams abfackeln, was hier für welche Ausgabe gebraucht wird lässt sich iontern gegf. über zusammenkopieren in neue Streams abfackeln.
Der Ansatz von Jaenicke könnte für Dich passen, auch Dein Ansatz mit Längenspeicherung innerhalb des Streams ist brauchbar, allerdings würde ich den von Komponenten zu ladenden Stream vorher in einen neues Extrahieren.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat