Detecter et empecher une erreur de se produire

Millenius Messages postés 8 Date d'inscription lundi 4 mars 2002 Statut Membre Dernière intervention 24 mars 2002 - 21 mars 2002 à 11:50
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 - 3 avril 2002 à 01:56
Voila mon prb
J'utilise un protocole UDP pour interoger des serveurs distants. Ils me répondent, et j'affiche le résultat. Jusqu'a la pas de prb
le seul hic, c'est lorsqu'un de ces serveurs me renvoit un peu nimporte quoi... ca me fait un beau msg rouge au milieu de l'écran : EWriteError, et clair : echec de flux de données.

j'ai beau essayer de mettre un except on EWriteError juste aprés mon try, ca me fait qd meme l'erreur...
j'aimerias donc bien savoir comment detecter cette erreur et ne RIEN faire au lieu de m'afficher cette horreur ;)

merci à vous !

6 réponses

PhGORMAND Messages postés 54 Date d'inscription jeudi 3 janvier 2002 Statut Membre Dernière intervention 20 juillet 2006
22 mars 2002 à 10:58
Salut. Je ne connais pas le protocole UDP, mais
as tu essayé l'option de compilation de gestion
des Entrés/sorties, qui empeche le blocage systeme ?

{$I-} et récupérer le n° d'erreur avec IoResult.

http://philippe.gormand.free.fr/
0
Millenius Messages postés 8 Date d'inscription lundi 4 mars 2002 Statut Membre Dernière intervention 24 mars 2002
22 mars 2002 à 17:49
euh non, ta pas un url à me filer ?
merci d'avance !
0
PhGORMAND Messages postés 54 Date d'inscription jeudi 3 janvier 2002 Statut Membre Dernière intervention 20 juillet 2006
24 mars 2002 à 19:09
Un URL ? Ben je t'ai donné le mien :
http://philippe.gormand.free.fr/

Sur mon site, tu trouveras des exemples, des sources, et des liens vers d'autre sites, dont
l'exellent site de Michel Bardou.
Mais tu peux aussi consulter l'aide de DELPHI, sur les options de compilation.
0
Millenius Messages postés 8 Date d'inscription lundi 4 mars 2002 Statut Membre Dernière intervention 24 mars 2002
24 mars 2002 à 22:19
Merci de ton aide :)
mais la gestion des E/S ne gere pas ce genre d'erreur... j'ai utilisé le {$I-} et checké le n° IResult, mais ca me fait qd meme un beau plantage de l'appli :(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PhGORMAND Messages postés 54 Date d'inscription jeudi 3 janvier 2002 Statut Membre Dernière intervention 20 juillet 2006
25 mars 2002 à 13:49
Petite question. As tu vérifier la taille du TStream
de réception ( priorité Size ) ? Peut etre qu'il y a un
risque de débordement.
Daprès l'aide de DELPHI, ton problème signifit que
le flux ne peut écrire le nombre spécifié d'octets.
A+
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
3 avril 2002 à 01:56
J'ai peut-être une idée à essayer, Les échanges réseau ne sont pas gérés directement au moment de l'appel du composant UDP. Il faut capturer les erreurs au niveau application :

Dans la fenêtre principale (FenPrinc dans cet exemple) de ton appli ajoute la procédure suivante :
Procedure FenPrincOnException(Sender: TObject; E: Exception);

Puis ajoute le code de cette procédure :
Procedure TFenPrinc.FenPrincOnException(Sender: TObject; E: Exception);
Begin
If Not (E Is EWriteError )
Then Begin
ShowException(E,ExceptAddr);
End;
End;

Enfin dans l'évennement OnCreate de la fiche principale ajoute le code suivant :
procedure TFenPrinc.FormCreate(Sender: TObject);
begin
Application.OnException:=FenPrincOnException;
end;

Le principe est que toutes les exception non captées par un block TRY...EXCEPT vont passer par la procédure FenPrincOnException, il doit alors être facile de faire le tri dans les erreurs...

J'espère avoir répondu...

--- Nono du Moulin ---
0
Rejoignez-nous