Einzelnen Beitrag anzeigen

WS1976
(Gast)

n/a Beiträge
 
#13

Re: String in Stream speichern

  Alt 31. Jan 2008, 06:38
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
  Mit Zitat antworten Zitat