몇일째 삽질하고 있습니다. 도와주세요~~ ㅡ..ㅡ;
문제는 재귀호출에서 List index out of bounds(1) 가 발생합니다.
TEST
└TEST
└TEST
위와 같이 단일 폴더들만 있는 경우에는 삭제가 잘되는데여
TEST
└TEST
└TEST
이런 식인 경우에 에러가...
아래 작성한 소스인데 뭐가 문제일까여?
procedure FTP.DelClick(Sender: TObject);
begin
Folder_Delete(Folder_Name);
end;
procedure FTP.Folder_Delete(DirName: String);
var
I: Integer;
ThisPath: String;
DirList: TIdFTPListItems;
DirItem: TIdFTPListItem;
begin
IdFTP.ChangeDir(DirName);
IdFTP.List(nil);
DirList := IdFTP.DirectoryListing;
for I := 0 to DirList.Count - 1 do begin
DirItem := DirList.Items[I];
ThisPath := DirName + '/' + DirItem.FileName;
if DirItem.ItemType = ditDirectory then begin
All_Folder_Check(ThisPath);
end else IdFTP.Delete(ThisPath);
end;
IdFTP.RemoveDir(DirName);
end;
procedure FTP.Folder_Delete(DirName: String);
여기가... All_Folder_Check(ThisPath);
Folder_Delete 가 되어야 할거 같은데요..
인덱스값 1 이 가르키는 아이템 요소가 없어서 그러는거 같은데..용일님 말씀처럼 for문수정하시고..
브레이크 포인트 걸어서 확인을 해보시는게..^^;
그럼..