Newsgroup: it.comp.lang.delphi
Titolo: Aiuto! Componente FTP Indy

Ciao a tutti, premetto che sono un novellino in Delphi.
Sto usando un componente Indy, cioč IdFTP
Ho un problema con la gestione degli errori o meglio non capisco come
funzioni.
Un server ogni tanto č occupato e quando uso IdFTP.Connect(True);
Mi da errore e  dice che EIdProtocolError ha un messaggio, in effetti il
server risponde con un messaggio che č occupato di riprovare tra 10 minuti.
Ma i log IdFTP.Greeting.text e IdFTP.LoginMsg.text non lo sentono perché da
errore prima.
Come posso fare?
Grazie a tutti
Davide


-- 
"La velocità luce non è sufficiente Comandante Nunziatella, 
dobbiamo passare alla velocità smodata!"

Grazie, Purtroppo queste cose non le conosco ancora.
Adesso provo ma credo di aver capito.
Ancora Grazie
Davide


Ho fatto come detto da Massimo, ma niente non mi prende l'errore.
Continua a sottolinearmi questa parte di Unit
procedure TIdTCPConnection.RaiseExceptionForLastCmdResult;
begin
  raise EIdProtocolReplyError.CreateError(LastCmdResult.NumericCode,
LastCmdResult.Text.Text);
end;
Se io metto come except  EIdProtocolReplyError mi dà errore.
Non so come fare.
Grazie a tutti Davide



Dunque *se* l'errore viene sollevato dal metodo connect e connect è
all'interno del try/except non può non funzionare.
Se segui l'esempio che avevo postato  il messagedlg ti indica
esattamente l'eccezione di che tipo è (e.ClassName), presumibilmente
una EidProtocolReplyError (che viene rilasciato dal comando SendCmd
all'interno del metodo Connect in modalità AutoLogin).
try
  Connect()
except
  on E:  EidProtocolReplyError do begin
    //DEVI arrivare qui!
    MessageDlg('Errore di connessione!', mtError, [mbOk], 0);
  end else raise;  //se arrivi qui l'eccezione è di altro tipo
end;
Altrimenti posta il codice che ci si da un'occhiata ;-)
ciao.


Ho inserito quello che mi hai postato, ma il problema è che non accetta -
EidProtocolReplyError -
Il Debuger (se non dico una cavolata) mi dà errore e quindi non posso
provare.
Sono disperato!
Ho trovato un componente che si chiama IDConnectionIntercept ma anche questo
non gestisce gli errori.
Il codice è semplice clicco un tasto e fa:
iftp.Host:='**server**';
iftp.Username:='**user**';
iftp.Password:='**pass**';
iftp.Connect(false);
Davide Grazie molte


Davide Grazie molte
devi aggiungere nelle uses IdException


Adesso non mi dà più errore su EIdProtocolReplyError e il programma si
avvia, ma l'errore quando trova "occupato" rimane! :-(
Prima di visualizzare il MessageDlg mi apre la unit IdTCPConnection e mi
sottolinea questa procedura
procedure TIdTCPConnection.RaiseExceptionForLastCmdResult;
begin
  raise EIdProtocolReplyError.CreateError(LastCmdResult.NumericCode,
LastCmdResult.Text.Text);
end;
Non so come ringraziarti della tua disponibilità.
Ancora Grazie Davide


Ancora Grazie Davide
Se vuoi puoi farmi un bonifico :p
Ciao.


Hai ragione, come detto non so come ringraziarti.
Sono depresso! Mi sono reso conto di quante cose che devo ancora imparare su
Delphi.
Visto che sei gentilissimo ti chiedo ancora una cosa, mi consigli dei libri
per studiare Delphi, In Italiano, purtroppo l'inglese non lo so.
Grazie ancora Davide


Grazie ancora Davide
In italiano non saprei, però se te ne vai un po' a fangoogle, se ne è
parlato più volte in questo ng ;-)
inizia da qui.
http://makeashorterlink.com/?K1B721F98
Ciao,
