Autor Beitrag
LittleBen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 258
Erhaltene Danke: 4

Win 7, Mac OS
Delphi 7
BeitragVerfasst: Mo 19.09.11 15:42 
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?
ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Mo 19.09.11 15:47 
Wieso nicht gleich einen TStringStream verwenden?

ausblenden 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;

Für diesen Beitrag haben gedankt: LittleBen
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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.

_________________
We are, we were and will not be.

Für diesen Beitrag haben gedankt: LittleBen