//dir为要删除的目录,rootdir为dir所在的目录,二者都为具体路径
procedure delltree(dir,rootdir:string);
var olddir:string;
LS: TStringList;
FileCount:Integer;
begin
LS := TStringList.Create;
ftpmainform.FTPClient.ChangeDir(Dir);
olddir:=ftpmainform.FTPClient.RetrieveCurrentDir;
ftpmainform.FTPClient.List(LS);
if ftpmainform.FTPClient.RetrieveCurrentDir=RootDir then Exit; //出口 if ls.Count=2 then //目录为空
begin
ftpmainform.FTPClient.ChangeDirUp;
ftpmainform.FTPClient.removedir(olddir);
delltree(ftpmainform.FTPClient.RetrieveCurrentDir,rootdir);
end
else
begin
for FileCount:=0 to LS.Count - 1 do
begin
if (ftpmainform.FTPClient.DirectoryListing.Items[FileCount].ItemType = ditDirectory)
then
if(ftpmainform.FTPClient.DirectoryListing.Items[FileCount].FileName<>'.')and(ftpmainform.FTPClient.DirectoryListing.Items[FileCount].FileName<>'..')
then
delltree(ftpmainform.FTPClient.RetrieveCurrentDir+'/'+ftpmainform.FTPClient.DirectoryListing.Items[FileCount].FileName,rootdir) else
ftpmainform.FTPClient.Delete(ftpmainform.FTPClient.RetrieveCurrentDir+'/'+ftpmainform.FTPClient.DirectoryListing.Items[FileCount].FileName);
end;
delltree(ftpmainform.FTPClient.RetrieveCurrentDir,rootdir);
end;
end;
//小弟不知道错在什么地方了,就是不能完全删除,有错误,请给小弟指点一下!
procedure delltree(dir,rootdir:string);
var olddir:string;
LS: TStringList;
FileCount:Integer;
begin
LS := TStringList.Create;
ftpmainform.FTPClient.ChangeDir(Dir);
olddir:=ftpmainform.FTPClient.RetrieveCurrentDir;
ftpmainform.FTPClient.List(LS);
if ftpmainform.FTPClient.RetrieveCurrentDir=RootDir then Exit; //出口 if ls.Count=2 then //目录为空
begin
ftpmainform.FTPClient.ChangeDirUp;
ftpmainform.FTPClient.removedir(olddir);
delltree(ftpmainform.FTPClient.RetrieveCurrentDir,rootdir);
end
else
begin
for FileCount:=0 to LS.Count - 1 do
begin
if (ftpmainform.FTPClient.DirectoryListing.Items[FileCount].ItemType = ditDirectory)
then
if(ftpmainform.FTPClient.DirectoryListing.Items[FileCount].FileName<>'.')and(ftpmainform.FTPClient.DirectoryListing.Items[FileCount].FileName<>'..')
then
delltree(ftpmainform.FTPClient.RetrieveCurrentDir+'/'+ftpmainform.FTPClient.DirectoryListing.Items[FileCount].FileName,rootdir) else
ftpmainform.FTPClient.Delete(ftpmainform.FTPClient.RetrieveCurrentDir+'/'+ftpmainform.FTPClient.DirectoryListing.Items[FileCount].FileName);
end;
delltree(ftpmainform.FTPClient.RetrieveCurrentDir,rootdir);
end;
end;
//小弟不知道错在什么地方了,就是不能完全删除,有错误,请给小弟指点一下!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货