Ich würde gern einem String den Inhalt eines TMemoryStreams direkt (über Umweg TStringList.Text gehts) übergeben. Dabei habe ich die Methode ReadAnsiString als dafür geeignet angesehen. Allerdings bekomme ich ein Stream read Error bei deren Verwendung.
Ich habe mir mal den Quellcode angesehen, sieht eigentlich verwendbar aus (kann leider nicht debuggen, da, wenn ich versuche die Unit Classes mit deren .inc in das Projekt einzufügen, es zur Fehlermeldung kommt: system.pp(40,2) Fatal: Can not open include file "systemh.inc").
Habe ich einen Ansatzfehler (Denkfehler) oder ist das ein Bug (Win7 64 Bit, Lazarus 1.3 r46545M FPC 2.7.1 i386-win32-win32/win64)?!
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
MS: TMemoryStream;
SL: TStringList;
i: Integer;
s: String;
begin
MS:=TMemoryStream.Create;
SL:=TStringList.Create;
for i:=0 to 99 do MS.WriteByte(65);
MS.Position:=0;
SL.LoadFromStream(MS); //das geht
MS.Position:=0;
Caption:=IntToStr(MS.ReadByte); //das auch
MS.Position:=0;
s:=MS.ReadAnsiString; //hier kommt es zum Stream read Error
// Memo1.Lines.Text:=MS.ReadAnsiString;
SL.Free;
MS.Free;
end;