Форум: "Сети";
Текущий архив: 2011.04.24;
Скачать: [xml.tar.bz2];
ВнизTIdFTP циклическое удаление Найти похожие ветки
← →
novai (2009-03-12 08:16) [0]Помогите примером, как можно удалить все файлы и папки на фтп при помощи этого компонента? Те нужно как я понимаю делать цикл цикла? не могу понять как. Подскажите уважаемые мастера.
← →
novai (2009-03-12 08:49) [1]сделал так:
dirs:=Tstringlist.Create;
files:=Tstringlist.Create;
try
ftp.Connect(true);
// находим все папки в корневой директории
ftp.List(dirs, "*", false);
for n:=0 to dirs.Count-1 do
begin
// заходим в директорию из списка папок
ftp.ChangeDir(dirs[n]);
// ищем все файлы
ftp.List(files, "*.*", false);
for n2:=0 to files.Count-1 do
begin
// удаляем найденные файлы
ftp.Delete(files[n2]);
end;
// поднимаемся на папку выше (в корневую)
ftp.ChangeDirUp;
// удаляем папку в которой только что были
ftp.RemoveDir(dirs[n]);
memo1.Lines.Add("Папка: \"+dirs[n]+" - УДАЛЕНА (СО ВСЕМИ ФАЙЛАМИ)");
end;
finally
ftp.Disconnect;
end;
files.Free;
dirs.Free;
но надо чтобы был полный обход всех папок и файлов
← →
Anatoly Podgoretsky © (2009-03-12 09:09) [2]> novai (12.03.2009 8:16:00) [0]
Можно по маске или в цикле, но поскольку все файлы, то по маске *
← →
novai (2009-03-12 09:11) [3]Анатолий, как цикл организовать? чтоб все вложеннсти пройти?
← →
FireMan_Alexey © (2009-03-12 09:19) [4]Рекурсия... :)
← →
Anatoly Podgoretsky © (2009-03-12 09:55) [5]> novai (12.03.2009 9:11:03) [3]
Зачем реализовывать, то что у тебя уже реализовано, возможно нужно только учесть обязательное удаление с конца дерево, но это то делается с помощью рекурсии.
← →
novai (2009-03-12 09:56) [6]О, это магическое слово рекрусия(
← →
FireMan_Alexey © (2009-03-12 20:13) [7]Procedure DelFiles;
Begin
ftp.List(dirs, "*", false);
for n:=0 to dirs.Count-1 do
begin
// заходим в директорию из списка папок
ftp.ChangeDir(dirs[n]);
DelFiles;
// поднимаемся на папку выше (в корневую)
ftp.ChangeDirUp;
ftp.RemoveDir(dirs[n]);
End;
// ищем все файлы
ftp.List(files, "*.*", false);
for n2:=0 to files.Count-1 do
begin
// удаляем найденные файлы
ftp.Delete(files[n2]);
end;
//Усе!!!!!
End;
Пользовать так:
1 - Войти в каталог который нужно убить
2 - Call DelFiles
3 - Выйти выше из папки и удалить ее!
← →
FireMan_Alexey © (2009-03-12 20:44) [8]Да ошибка одна вышла)
Procedure DelFiles;
Var
N:Integer;
DirName:String;
begin
...
for N:=....
begin
DirName:=dirs[n];
...
ftp.ChangeDirUp;
ftp.RemoveDir(DirName);
ftp.List(dirs, "*", false);
End;
Иначе рекурсия будет не правильно работать :)
← →
FireMan_Alexey © (2009-03-12 20:55) [9]Блин обратно наплужил :)
For замени на While
While Dir.Count>0 do
Begin
DirName:=Dirs[0]; // Будем удалять всегда первый каталог в списке !!!
...
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2011.04.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c