Приложение зависает, потому что Indy использует операции блокировки.Пока код выполняется, основной цикл сообщений не работает, поэтому новые сообщения не обрабатываются до тех пор, пока не завершится cxButton1Click()
.Чтобы решить эту проблему, либо поместите компонент TIdAntiFreeze
в TForm
, либо переместите код TIdFTP
в отдельный рабочий поток, а затем используйте TIdSync
или TIdNotify
для безопасного обновления пользовательского интерфейса при необходимости.
Файл будет «поврежден», если вы переносите его в режиме ASCII, а не в двоичном режиме.Убедитесь, что для свойства TIdFTP.TransferType
установлено значение ftBinary
.Для Indy 9 и более ранних версий по умолчанию установлено значение ftBinary
, но для Indy 10 по умолчанию используется значение ftASCII
(в соответствии со спецификациями протокола FTP).