【问题标题】:INDY10 Stream write error while I trying to send data trought FTP我尝试通过 FTP 发送数据时出现 INDY10 流写入错误
【发布时间】:2015-03-05 15:23:14
【问题描述】:
我想把 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;
但是当我点击“发送”按钮时出现两个错误:
当备忘录为空时
当我尝试发送数据时
【问题讨论】:
标签:
delphi
ftp
indy
indy10
【解决方案1】:
TStream 是一个抽象类。你绝不能实例化它。改用具体类,例如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;