Delphi. Indy. FTP. Как правильно удалить директорию с FTP сервера?

Столкнулся с тем, что если удалять директорию с помощью стандартной функции RemoveDir библиотеки Indy, то непустые директории не удаляются. Немного поискав, наткнулся на почти готовое решение на форуме. Суть в том, что удалять директории нужно рекурсивно, и начиная с конца списка.

Применив этот код в своем примере напрямую, я столкнулся с ошибкой – “Already Connected”. И действительно, при рекурсии, если подключаться в самой процедуре, Connect к FTP серверу  получается несколько раз. Когда я вынес подключение вовне, а рекурсия работала с одним подключением – всё встало на свои места. Вот код, который у меня получился и работал корректно на тестах.

Сам вызов будет следующим

Всего получилось 3 процедуры

Для начала рассмотрим так сказать ядро удаления…

Простой и компактный код (взял с форума)

Другой вариант удаления

Теперь встроим это ядро в процедуру, которая подключает компонент idFTP к FTP серверу

Вспомогательные процедуры

И ещё одна – получает список файлов на сервере

 

This entry was posted in Delphi. Bookmark the permalink.