首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

递归错哪了

2013-04-21 
递归哪里错了indy ftp 删除目录内所有内容procedure XXXXXXXXX.FTP_DeleteAllFiles(var idFTP : TIdFtpRe

递归哪里错了
indy ftp 删除目录内所有内容
procedure XXXXXXXXX.FTP_DeleteAllFiles(var idFTP : TIdFtp;RemoteDir,RootDir : string);
var
  i:integer;
begin
  IdFTP.ChangeDir(RemoteDir);
  if SameText(RootDir,idFTP.RetrieveCurrentDir) then Exit;
  for i:=0 to IdFTP.DirectoryListing.Count-1 do
  begin
    if IdFTP.DirectoryListing.Items[i].ItemType = ditFile then 
    IdFTP.Delete(IdFTP.DirectoryListing.Items[i].FileName);
    if IdFTP.DirectoryListing.Items[i].ItemType = ditDirectory then 
    FTP_DeleteAllFiles(IdFTP,IdFTP.DirectoryListing.Items[i].FileName,RootDir);
  end;
  IdFTP.ChangeDirUp;
  IdFTP.RemoveDir(RemoteDir);
  FTP_DeleteAllFiles(IdFTP,idFTP.RetrieveCurrentDir,RootDir);
end; 递归 FTP
[解决办法]
  IdFTP.ChangeDirUp;
  IdFTP.RemoveDir(RemoteDir);
  FTP_DeleteAllFiles(IdFTP,idFTP.RetrieveCurrentDir,RootDir);
end;

最后一条 FTP_DeleteAllFiles(IdFTP,idFTP.RetrieveCurrentDir,RootDir);  你删掉试试?
[解决办法]
for i:=0 to IdFTP.DirectoryListing.Count-1 do
改为
for i:=IdFTP.DirectoryListing.Count-1 downto 0 do
试一试?

热点排行