Entwickler-Ecke

Dateizugriff - Stream beschreiben und auslesen - Was mache ich falsch?


LittleBen - Mo 19.09.11 15:42
Titel: Stream beschreiben und auslesen - Was mache ich falsch?
Hallo zusammen,
ich weiß, dass es zu diesem Thema hunderte Beiträge im Netz gibt, jeodch konnten die mir nicht weiterhelfen. Beim beschreiben und auslesen eines Memorystream passiert bei mir einfach nichts, dabei habe ich die verschiedensten Methoden ausprobiert. Könnt ihr mir sagen, was ich hier falsch mache?

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.Button1Click(Sender: TObject);
var Stream: TMemoryStream; //oder nur TSream?
    cText: string;
    len: integer;
begin
 Stream:= TMemoryStream.Create;

 cText:= 'Test';
 Len := Length(cText);
 Stream.WriteBuffer(Len, SizeOf(Len));
 Stream.WriteBuffer(Pointer(cText)^, Len);

 showmessage(LoadStringFromStream(Stream)); //Hier habe ich schon min. 8 Funktionen ausprobiert...

 Stream.Free;
end;

Vermute, dass ich da etwas grundlegendes nicht verstanden habe.
Hoffe, ihr könnt mir helfen!

Viele Grüße,
Benny


Andreas L. - Mo 19.09.11 15:47

Wieso nicht gleich einen TStringStream verwenden?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var
  ss: TStringStream;
  s: String;
begin
  ss := TStringStream.Create;
  try
    ss.WriteString('dein string');
    s := ss.ReadString(ss.Size);
  finally
    ss.Free;
  end;


Gausi - Mo 19.09.11 15:48

Was macht denn LoadStringFromStream?

Ist aber vermutlich egal - der Fehler dürfte darin liegen, dass du die Position im Stream nicht zurücksetzt. Denn so wird der String von dort gelesen, wo du dich aktuell im Stream befindest. Und das ist bei dir das Ende, da kann dann nichts mehr gelesen werden.