Wysyłanie zawartości Memo przez FTP, bez zapisywania do pliku

0

Chcę wysłać zawartość Memo bezpośrednio przez Stream, mam taki kod:

procedure TForm5.SendClick(Sender: TObject);
var K: TStream;
begin
    K := TStream.Create;
    Memo1.Lines.SaveToStream(K);
    FTP.Host := 'localhost';
    FTP.Username := 'loginek';
    FTP.Password := 'haselko';
    FTP.Connect;
    if FTP.Connected then FTP.Put(K,'file.txt');
end;

Jednakże gdy wciskam przycisk Send dostaje taki oto komunikat:

1s06ca.jpg

A jak coś próbuję zapisać to taki:

gk0fju.jpg

Słyszałem że trzeba używać TIdStream ale też słyszałem że w 10 tego nie ma

1

Nie znam Indy. Ale o ile się orientuje, to TStream jest jak TStrings klasą abstrakcyjną. Spróbuj może TMemoryStream. Jeżeli to nie pomoże, to chyba tylko @kAzek będzie wiedział tutaj jak to "ugryźć" :/

0

Dzięki

0

Problemem jest używanie bazowej klasy TStream - to przecież klasa abstrakcyjna; Oczywiście nie zmienia to faktu, że deklaracji zmiennej nie musisz zmieniać, bo wystarczy użyć konstruktora innej klasy dziedziczącej po TStream, np.:

var
  K: TStream;
begin
  K := TMemoryStream.Create();
  {..}

jednak lepiej będzie w deklaracji podać od razu właściwą klasę;

PS: Powinieneś skorzystać z bloku Try Finally w wymienionej metodzie, aby połączyć się z serwerem, zrobić co chcesz na plikach i zamknąć połączenie; U Ciebie po wywołaniu metody połączenie zostaje otwarte.

0

Dzięki, TMemoryStream działa

1 użytkowników online, w tym zalogowanych: 0, gości: 1