НЕ используйте события OnWork...
для управления вашей бизнес-логикой!Они предназначены только для статуса.В большинстве случаев Indy НЕ управляется событиями, за исключением нескольких исключений.
В этом случае OnWorkEnd
срабатывает после передачи необработанных данных файла, но ДО получения ответа сервера на загрузку иобработанный.Правильный способ загрузить другой файл - просто позвонить Put()
снова после выхода из предыдущего вызова на Put()
, например:
procedure TForm1.UploadFiles;
begin
try
IdFTP.Connect;
try
while (there is a file to upload) do
begin
if (directory is different than current) then
IdFTP.ChangeDir(directory);
IdFTP.Put(fileName, ExtractFileName(fileName));
end;
finally
IdFTP.Disconnect;
end;
except
on E: Exception do
ShowMessage(E.Message);
end;
end;