Hallo,
Ich würde folgende Änderung vorschlagen:
um die Länge des Strings nicht zwischenspeichern zu müssen (fürs zurücklesen) benutze einfach: Stream.Size für die Länge des Strings.
Das ist zwar die Gesamtlänge des Streams aber so bist du immer auf der sicheren Seite. In deinem Beispiel war die Länge immer = 0, deshalb der Empfangsstring leer.
Ans Ende des Codes gehört:
stream.free;
bitte nicht vergessen.
hier der geänderte Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Stream: TMemoryStream;
S: String;
S_S: String;
N: LongInt;
begin
S:= Edit1.Text;
N:= Length(S);
if N > 0 then
begin
// Stream -> String String -> Stream
Stream:= TMemoryStream.Create;
// Stream.Write(N, SizeOf(N));
Stream.Write(S, N);
// Stream -> String
Stream.Position:= 0;
Stream.read(S_S,Stream.Size);
end;
MessageBox(0, pchar(S_S), 'title', MB_OK);
stream.free;
end;
Grüsse
Rainer