Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Indy FTP bzw. MemoryStream fehler


>M@steR< - Fr 03.09.10 16:25
Titel: Indy FTP bzw. MemoryStream fehler
Gelöscht


Narses - Fr 03.09.10 19:20

Moin!

Das Problem ist hier nicht netzwerkbezogen, sondern liegt am Zugriff auf die Strings. :idea:

Zunächst mal die obligatorische Warnung vorab: Der generische Typ String ist nur bis (ausschließlich) Delphi 2009 ein AnsiString, hat also 1-Byte Zeichen, ab D2k9 ist das dann ein Unicodestring! Deshalb: entweder AnsiString nehmen oder besser nicht davon ausgehen, dass Strings 1 Byte pro Zeichen haben! :idea:

Hier ist der Fehler:
user profile icon>M@steR< hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
  var st: TMemoryStream;
      s: string;
  begin
    s := Memo2.Text;
    st := TMemoryStream.Create;
    try
      st.WriteBuffer(s,length(s));
Damit greifst du nicht auf die String-Daten zu, sondern auf den Pointer, das ist natürlich nicht korrekt! Probier das mal so:

Delphi-Quelltext
1:
st.WriteBuffer(PChar(s)^, Length(s));                    
Und als Tipp: Du kannst den Memo-Inhalt auch direkt per .SaveToStream in den Stream schreiben. Abgesehen davon gibt´s auch noch den TStringStream. :idea: ;)

cu
Narses


>M@steR< - Fr 03.09.10 20:55

Gelöscht