Delphi下载文件Android与Memory Stream

时间:2013-09-25 19:25:09

标签: android delphi indy delphi-xe5

我试图以这种方式从服务器下载文件:

var MeS:TMemoryStream;
begin
 Mes:=TMemoryStream.Create;
 IdFTP1.Connect;
 Mes.Position:=0;
  try
   IdFTP1.Get(Mes, 'dolcestilnovo.txt', True, False);
  finally
   MeS.Free;
   IdFTP1.Disconnect;
  end;
 Memo5.Lines.LoadFromStream(Mes);
end;

我必须在Memo5中显示dolcestilnovo.txt的内容,但我在IdFTP1.Get();方法上有错误。

错误显示“没有可以使用这些参数调用'Get'的重载版本”。我能做什么?

我想使用MemoryStream因为我在Android设备上下载它。

1 个答案:

答案 0 :(得分:5)

查看TStream TIdFTP.Get()版本的签名:

procedure Get(const ASourceFile: string; ADest: TStream; AResume: Boolean = false); overload;

了解您的代码与之匹配的原因?请改用:

IdFTP1.Get('dolcestilnovo.txt', Mes, False);

不要忘记在调用TMemoryStream.Position之前再次将Memo5.Lines.LoadFromStream(Mes)重置为0,否则它将不会加载任何内容。

试试这个:

var
  MeS: TMemoryStream;
begin
  Mes := TMemoryStream.Create;
  IdFTP1.Connect;
  try
    IdFTP1.Get('dolcestilnovo.txt', Mes, False);
  finally
    IdFTP1.Disconnect;
  end;
  Mes.Position := 0;
  Memo5.Lines.LoadFromStream(Mes);
end;