尝试发送数据时出现 INDY10 流写入错误 FTP

INDY10 Stream write error while I trying to send data trought FTP

我想将 Memo1 中的数据直接放到我的 FTP 服务器上,我有代码:

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

但是当我点击 "Send" 按钮时出现了两个错误:

当备忘录为空时

当我尝试发送数据时

TStream 是一个摘要 class。你绝不能实例化它。使用具体的 class 代替,例如 TMemoryStream

您还需要在完成流后将其销毁,否则它会泄漏。帮自己一个忙,将 ReportMemoryLeaksOnShutdown 设置为 True,例如在您的 .dpr 文件中。这将允许您在程序终止时获得所有泄漏内存的报告。

您的代码可能 运行 像这样:

var 
  Stream: TMemoryStream;  
....
Stream := TMemoryStream.Create;
try
  // .... initialize the Indy object
  if FTP.Connected then begin
    // .... populate stream
    Stream.Position := 0;
    FTP.Put(Stream, '');
  end;
finally
  Stream.Free;    
end;