procedure  TKAIKAIMAIN.xiazai(ftplj,bdlj:string);
var
   strnowdir,FileName : string;  // FileName,name,
   Dir_List:TStringList;
   i: Integer;
begin  i:=0;
  try
  strnowdir:=ftplj;
  if idftp1.RetrieveCurrentDir<>'\' then
  begin
    IdFTP1.ChangeDirUp;
    IdFTP1.ChangeDirUp;
    IdFTP1.ChangeDirUp;
  end;
  IdFTP1.ChangeDir(strnowdir);
  Dir_List:=TStringList.Create;
  idftp1.List(Dir_List);
  IDFTP1.TransferType:=ftBinary;
  if Dir_List.Count=0 then Exit;
//判断是否是目录  if (IdFTP1.DirectoryListing.Items[i].ItemType = ditDirectory ) then
    begin
       IdFTP1.ChangeDir(strnowdir);
    end;  for i:=0 to Dir_List.Count-1 do
  begin
      FileName:=IdFTP1.DirectoryListing.Items[i].FileName;
      showmessage(FileName);
     if (IdFTP1.DirectoryListing.Items[i].ItemType = ditFile) then
    //本地若存在文件,判断下载后是否覆盖本地文件  //      and (IdFTP1.DirectoryListing.Items[i].ModifiedDate > StrToDate('2011-3-19'))
      begin
      if FileExists(bdlj+IdFTP1.DirectoryListing.Items[i].FileName) then
      begin
        //ShowMessage('文件己下载');
        Continue;
      end
      else
      begin
         IdFTP1.Get(IdFTP1.DirectoryListing.Items[i].FileName,bdlj+IdFTP1.DirectoryListing.Items[i].FileName,False,true);
      end;
      end ;
  end;
 // showmessage(ftplj+'下载成功');
  Dir_List.Free;
  except
     ;
  end;end;
每次执行到IdFTP1.DirectoryListing.Items[i].ItemType = ditDirectory 就报出这个异常