Newsgroup: it.comp.lang.delphi
Titolo: Disattivare errori d'esecuzione...

Salve,
Ho fatto un programmino (sempre il solito) per la gestione delle caselle di
posta.
Funziona tutto benissimo ora..l'unica cosa un po' brutta è ceh oggi mi sono
accorto ceh siccome un mio account (sul pop 
popmail.inwind.it
) è
momentaneamente fuori uso...il mio programma mi va in errore aprendo una
brutta finestra "tecnica".
Ricordo che ai tmepi del pascal per evitare questi errori usavo direttive di
compilazioni come {$I-} per gli errori di input output....e così
via....sonoa ndato a vedere l'help e ho trovato delle direttive del genere
ma...non capisco quale faccia al caso mio (ho trovato delle $R che sembrano
generiche e poi delle $ENDIF e cose del genere che non conosco).
In pratica il mio "punto cruciale" sussiste nel POP.Connect (POP è un
TNMPOP3).
Se va a buon fine tutto ok...se però desse qualche errore (host invalid,
pass/user sbagliate, server down) mi si incricca il prog. Definire gli
eventi OnHostInvalid, OnConnectionFailed e simili pare non sia
sufficiente.....come posso fare per evitare che il programma abbia questa
brutta interruzione e prosegui comunicando l'errore come voglio io?
Grazie, ciao.
--
Giulio Pipitone (
www.FIGHTERS4WEB.COM
)
#mirror italiano ufficiale 
http://spam.abuse.net#

 ha scritto

hai provato a racchiudere il codice che genera l'errore in un blocco TRY -
EXCEPT ?
In pratica il tuo codice va messo all'interno di questo blocco in questo
modo:
try
  quì ci metti il tuo codice
except
   ShowMessage('Quì scrivi il testo del messaggio che vuoi far comparire');
end;
poi volendo, a seconda dell'eccezione che viene sollevata, si può
intercettare esclusivamente quella......ma ora lasciamo stare.
Ti saluto....ciao !!
Antonio Tarolla

 end;
Ciao!
Ora il pop funziona quindi mi costa un po' simulare l'"errore" di
prima....dovrei andare u po' alla ceca.
Stando a quanto mi dici nel mio caso potrei fare una cosa del genere....
procedure blablabla;
var
  a,b,c, gnegnegne : integer
   blabla: string.....etc...
begin
  writeln('ciao');
  ...etc.....
  try
    POP.Connect
  except
    writeln('Errore');
end;
..è un po' abbozzato come si vede ma quel che mi rpeme è sapere se posso
inglobare questo "try-except" all'interno di una procedura o se funziona in
un qualche diverso modo.
Se così fosse direi che è la soluzione ideale al mio caso.
Pensavo anche a un'altra cosa....l'errore che avvia l'"except" viene
riconosciuto in base a che cosa? Voglio dire...pare che il sistema funzioni
che Delphi prova a compiere un'operazione e se fallisce...ne fa
un'altra....ma da cosa riconosce la buona riuscita dell'operazione? Se
faccio POP.Connect lui mi considera come buona riuscita l'essersi connesso e
come cattiva riuscita tutte le altre? Comprese la connessione ma con
"Autentication Required"?
Ciao e grazie.


 come cattiva riuscita tutte le altre?
lui la buona riuscita la "considera" dal fatto che nessuna eccezione viene
sollevata durante l'esecuzione del codice all'interno del metodo "Connect"
associato all'oggetto TPOP.
Le eccezioni sollevate possono essere molte. Anche l'uso di una normale
funzione di Delphi puň generare una determinata eccezione che se non č
filtrata dal metodo Connect mostra un determinato messaggio d'errore prima
di continuare l'esecuzione del codice che segue.
Il TRY - EXCEPT permette di intercettare queste eccezioni interrompendo
l'esecuzione del codice da quel punto in poi per procedere nel blocco
EXCEPT - END.
Inoltre credo che il metodo "Connect" gestisce lui le eccezioni
visualizzando opportuni messaggi.
Ok, ti saluto.
Ciao.
Antonio Tarolla


 Ok, ti saluto.