Witam od paru dni zmagam się z problemem z IdFTP z komponentów INDY. Chodzi o procedurę list, działa poprawnie do czasu gdy gdy serwer z którym łączy się mój klient nie zawiesi się wtedy po zalogowaniu i wydaniu polecenia list mój klient również się zawiesza nie generuje żadnych wyjątków które mógłbym przechwycić, ta sytuacja sprawia że cały program mi wisi, niestety nie mogę zrobić ręcznego odłączenia bo jest to program działający jako usługa dla Windows i odpala i pobiera pliki co jakiś czas działa bez ingerencji usera. Może ktoś z was wie jak sprawdzić czy listowanie się odbyło ?? Lub jak przerwać listowanie w razie zwisu bo disconnect nie przerywa tego tylko klient dalej sobie wisi.

Kolejny problem to że mój program nie przechwytuje wyjątku gdy odłączę kabel sieciowy podczas jego połączenia z serwerem tylko usługa się wywala i nie dokonuje dalszych czynności :

Try

{Procedutki pobierania listowania, przeszukiwania ftp}

except

on E1 : EIdTFTPException do
  Begin
           
                               
                if Ftpclient.Connected then Ftpclient.Disconnect;
              

                  AssignFile(logs,programlocation+'UPDErrors\'+'UPDerrors.log');
                  append(logs);
                  writeln(logs,'');
                  writeln(logs,'');
                  writeln(logs,'------------------FTPCLIENT---------------------------------');
                  writeln(logs,' Dnia : '+datetimetostr(now));
                  writeln(logs,'-----------------------------------------------------------------');
                  writeln(logs,'Podczas pracy programu wystąpił następujący błąd  :     ');
                  writeln(logs,'-----------------------------------------------------------------');
                  writeln(logs,e1.Message);
                  writeln(logs,'-----------------------------------------------------------------');
                  closefile(logs);
          End ;

  on E2: EIdSocketError do
          Begin
            if e.LastError=10054 then Ftpclient.IOHandler.Close;
            if Ftpclient.Connected then Ftpclient.Disconnect;

                  AssignFile(logs,programlocation+'UPDErrors\'+'UPDerrors.log');
                  append(logs);
                  writeln(logs,'');
                  writeln(logs,'');
                  writeln(logs,'------------------FTPCLIENT---------------------------------');
                  writeln(logs,' Dnia : '+datetimetostr(now));
                  writeln(logs,'-----------------------------------------------------------------');
                  writeln(logs,'Podczas pracy programu wystąpił następujący błąd  :     ');
                  writeln(logs,'-----------------------------------------------------------------');
                  writeln(logs,e2.Message);
                  writeln(logs,'-----------------------------------------------------------------');
                  closefile(logs);


          End ;

    on E3: Exception do
                  begin
                  AssignFile(logs,programlocation+'UPDErrors\'+'UPDerrors.log');
                  append(logs);
                  writeln(logs,'');
                  writeln(logs,'');
                  writeln(logs,'------------------FTPCLIENT---------------------------------');
                  writeln(logs,' Dnia : '+datetimetostr(now));
                  writeln(logs,'-----------------------------------------------------------------');
                  writeln(logs,'Podczas pracy programu wystąpił następujący błąd  :     ');
                  writeln(logs,'-----------------------------------------------------------------');
                  writeln(logs,e3.Message);
                  writeln(logs,'-----------------------------------------------------------------');
                  closefile(logs);

                  end;
End;

Może coś źle napisałem w przechwytywaniu wyjątku albo nie użyłem jakiejś klasy wymaganej do tego ??

w ogóle to czy w IDFTP z INDY 10 można ustawić time out na połączenie ??

Proszę o pomoc w tym temacie.