Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1885 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Borland C++} gestion des exception en graphique - Grrr

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Borland C++} gestion des exception en graphique - Grrr

n°1294324
gargantua3​07
Posté le 29-01-2006 à 19:21:33  profilanswer
 

Bon, voila, ça m'enerve!
J'ai un formulaire, quelques champs 'Edit', certain d'entre eux sont pour la saisie de nombre.
Derriere je l'ai convertis donc en Int.  
Comme ça peut generer une exception en cas de saisie autre que des chiffre, je met tout ça dans un try/catch comme si dessous.
Mais rien faire, apres compilation, quand je fait un test, s'il y a une erreur de saisie j'ai un message a la **** dans une fentre qui apparait, el truc qui plante totalement, et une fentre avec le processeur et les instructions qui apparait.
Voici mon code :
 

Code :
  1. void __fastcall TForm1::CalculerClick(TObject *Sender)
  2. {
  3.         int alpha,Phi,nb=0;
  4.         try
  5.         {
  6.                 alpha = StrToInt(EditAlpha->Text);
  7.                 Phi = StrToInt(EditPhi->Text);
  8.                 nb = StrToInt(EditNbIte->Text);
  9.         }
  10.         catch(EConvertError &Exception)
  11.          {
  12.               LblAlert->Visible=true;
  13.          }
  14. }


 
 
Que faire...???
 
Je suis sous Borldan 6 C++ .


Message édité par gargantua307 le 30-01-2006 à 08:56:55
mood
Publicité
Posté le 29-01-2006 à 19:21:33  profilanswer
 

n°1294335
breizhbugs
Posté le 29-01-2006 à 19:57:26  profilanswer
 

Salut,
Quel est l'erreur exacte?
Es tu sur que StrToInt genere bien une EConvertError?
 
Dans ton catch, on ne peut pas dire que tu cherche a resoudre le probleme!
Quelle est l'utilité de "LblAlert->Visible=true;" pour la suite des calculs?

n°1294341
gargantua3​07
Posté le 29-01-2006 à 20:23:54  profilanswer
 


 
Pour EConvertError, j'ai trouvé ce morceau de code sur internet, donc je pense que ça doit etre ça. Je vais verifier (je sais pas trop comment).
 
Sinon pour le LblAlert->Visible=true;
ça m'affiche sur la fenetre un Label pour signaler a l'utilisateur une mauvaise saisie, afin qu'il recommence.
J'aurai eventuellement mettre ça dans un pop-up mais je ne sais pas faire (je debute en graphique).
 
Merci

n°1294363
fat
Posté le 29-01-2006 à 21:42:00  profilanswer
 

Et si tu utilisais StrToIntDef ?

n°1294426
gargantua3​07
Posté le 30-01-2006 à 08:54:32  profilanswer
 

fat a écrit :

Et si tu utilisais StrToIntDef ?


 
Le probleme de StrToIntDef c'est que en cas d'erreur il prend une valeur par defaut si j'ai bien compris.
 
Sinon le message de borland (lors de l'execution) : blabla have raised an EConvertError with text "<valeur de ma zone de saisie>" blabla.
Je n'ai plus le message exact sous les yeux.
 
Bref, je ne comprend pas pourquoi c'est raised, alors qu'il y a un traitement dans mon catch...?
 
Sinon, vu que rien dans mon projet ne m'empeche a priori de saisir des flottant, je pense utiliser StrToFlat si j'me souvient bien, y a t-il l'equivalent pour des double?
 
Merci.
 
Comment créer une focntion pour empeché lasaisie de text directement sur l'interface?

n°1294435
fat
Posté le 30-01-2006 à 09:23:28  profilanswer
 

Si tu as le message "...raised an EConvertError", c'est que le StrToInt a lancé une exception qui n'est pas "attrapée" par ton catch, c'est ca qui est bizzare, étant donné que tu catch une EConvertError.
Un truc : quand tu es en debug et que tu lance le programme à partir de l'IDE, tu as les messages d'exception même si tu as un catch qui l'attrape, et juste après ce message, ton programme continue dans la partie catch, cela permets de savoir justement qu'il y a eu une exception.
Mais si tu lance le programme en dehors de l'ide, tu ne devrais pas avoir ce message.

n°1294449
gargantua3​07
Posté le 30-01-2006 à 09:49:38  profilanswer
 

fat a écrit :

Si tu as le message "...raised an EConvertError", c'est que le StrToInt a lancé une exception qui n'est pas "attrapée" par ton catch, c'est ca qui est bizzare, étant donné que tu catch une EConvertError.
Un truc : quand tu es en debug et que tu lance le programme à partir de l'IDE, tu as les messages d'exception même si tu as un catch qui l'attrape, et juste après ce message, ton programme continue dans la partie catch, cela permets de savoir justement qu'il y a eu une exception.
Mais si tu lance le programme en dehors de l'ide, tu ne devrais pas avoir ce message.


 
C'est effectivement ce que j'etais en train de verifier.
Effectivement, quand je lance le .exe , tout ce passe comme prévu.
 
Par contre depuis borland, quand j'ai ce message, il plante après...c'est pour ça que ça me faisait ***** :fou:  
 
Enfin, maintenant je sais a quoi m'en tenir.
 
Merci pour votre aide.
 
 
Derniere question, comment faire pour que quand je click sur un boutton, une nouvelle page de mon formulaire s'ouvre? Enfin c'est a dire que les param du premier formulaire sont envoyés, et je tombe sur un autre formulaire ou les traitements sont appelés et le resultat afficher.
 
Merci.
 
Garg

n°1294794
haazheel
Posté le 30-01-2006 à 14:45:42  profilanswer
 

Le plus simple étant d'empêcher l'utilisateur d'entrer autre chose que des chiffres.
 

Code :
  1. long StylesEdit = GetWindowLong(Edit1->Handle, GWL_STYLE);
  2. SetWindowLong(Edit1->Handle, GWL_STYLE, StylesEdit | ES_NUMBER);

n°1294805
haazheel
Posté le 30-01-2006 à 14:49:26  profilanswer
 

Concernant les exceptions signalées par l'IDE de borland, pour les désactiver, il faut aller dans Outils > Options du débogueur > Exceptions du language.
 
Il y a deux case Arrêter sur exceptions Delphi et Arrêter sur Exceptions C++ à décocher.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Borland C++} gestion des exception en graphique - Grrr

 

Sujets relatifs
debuttant : Interaction dans un formulaire / Borland C++accéder un a un pixel d'une image sous C++builder(borland)
ASP.Net et interface graphique server-sideGestion d'erreur file_get_contents()
gestion htacessInterface graphique en ADA
[Borland C++] méthode pour avoir un aperçu d'une image?[Borland C++] Socket qui modifie les données ...
[turbo pascal] readkey et mode graphiqueGestion d'ERREUR(Resolu)
Plus de sujets relatifs à : [Borland C++} gestion des exception en graphique - Grrr


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR