Que pena... pero que es exactamente un dts?
Ahora si lo que entendí es correcto. lo que necesitas es validar el resultado de la operación para intentar repetirla si fué fallida.
Podrías crear una función para subir al ftp que te devuelva el resultado de la carga (True/False) y si es false validar para volver a ejecutar n veces hasta obtener el resultado correcto.
Algo así:
Código Delphi
[-]
function SubirEnFTP : boolean;
begin
try
Result := True;
except
Result := False;
end;
end;
procedure SubirArchivos
var
CanIntentos : Smallint;
begin
CanIntentos := 5;
while CanIntentos > 0 do
begin
if SubirEnFTP then
Break;
dec(CanIntentos);
end;
end;