Millenius
Messages postés8Date d'inscriptionlundi 4 mars 2002StatutMembreDernière intervention24 mars 2002
-
21 mars 2002 à 11:50
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 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 ;)
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.
Millenius
Messages postés8Date d'inscriptionlundi 4 mars 2002StatutMembreDernière intervention24 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 :(
Vous n’avez pas trouvé la réponse que vous recherchez ?
PhGORMAND
Messages postés54Date d'inscriptionjeudi 3 janvier 2002StatutMembreDernière intervention20 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+
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 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...