1,593
社区成员
发帖
与我相关
我的任务
分享
procedure Tmainform.download ;
var
name:string;
tt :TIdFTPListItems; //ftp列表
t : TIdFTPListItem; //ftp单条记录
j,f:Integer;
ls:TStringList ;
begin
if idftp.Connected =False then btn1.Click;
//idftp.ChangeDir('/Ext');
ls := TStringList.Create;
try
idftp.ChangeDir('/Ext');
idftp.ChangeDir(ip.Text);
idftp.ChangeDir(ftp_date.Text);
edt1.Text := IdFTP.RetrieveCurrentDir;
idftp.List(ls); //这句很关键啊
f:=idftp.DirectoryListing.Count-1 ;
{
if Trim(ip.Text)='255.255.8.80' then
begin
ShowMessage(IntToStr(f));
end;
on e: Exception do
Begin
log4error(PChar(E.Message)+'_连接超时');
End;
}
except
on e: Exception do
begin
log4error(PChar(E.Message)+'_改变目录错误');
mmo1.Lines.Add(PChar(E.Message));
mmo1.Lines.Add(ip.Text+'_'+ftp_date.Text+'无数据');
Exit;//没有会出现list index out of bounds 错误
f:=0;
end;
end;
//IdFTP.TransferType := ftBinary;
tt:=IdFTP.directorylisting;
forcedirectories ('.\'+ip.text+'\'+ftp_date.Text);
for j :=0 to f do
begin
t:=tt.items[j];
if (IdFTP.DirectoryListing.Items[j].ItemType = ditfile) and (f>0) then //如果是文件
begin
if Length(t.FileName)<11 then name :='data.txt'
else name:=t.FileName;
try
IdFTP.Get(t.FileName ,ip.text+'\'+ftp_date.Text+'\'+name,True,False);
except
on e: Exception do
Begin
mmo1.Lines.Add(PChar(E.Message)+name);
log4error(PChar(E.Message)+'_下载失败');
mmo1.Lines.Add(name+'_'+'下载失败');
End;
end;
end;
//mmo1.Lines.Add(ip.text+'_'+ftp_date.Text+'下载完毕');
end;
//下载完毕当前目录后退出到根目录
mmo2.Lines.Add(ip.text+'_'+ftp_date.Text+'='+inttostr(f)+'下载完毕');
idftp.ChangeDir('../');
idftp.ChangeDir('../');
idftp.ChangeDir('../');
end;