Probleme exceptions

Résolu
cs_haklia Messages postés 41 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 30 avril 2006 - 29 juil. 2004 à 13:55
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 29 juil. 2004 à 23:13
bonjour a tous,

bon voila mon code :

procedure TForm1.BitBtn1Click(Sender: TObject);
var
debut:integer;
begin
try
debut:=strtoint(edit1.Text);
except
on EConvertError do showmessage ('PAS OK');
end;
end;

il se passe qu'il plante quant meme sur la ligne debut:=strtoint(edit1.Text);
si qq'un pouvait me dire pourquoi...

merci

6 réponses

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
29 juil. 2004 à 14:18
Je te conseille d'utiliser StrToIntDef :

function StrToIntDef(const S: string; Default: Integer): Integer;

par exemple, dans ton cas :

debut := StrToIntDef(Edit1.Text, 0);


Sinon, essaye de lancer ton exécutable en dehors de l'environnement de Delphi, tu verras que ta gestion des erreurs est bien prise en compte.

On peut modifier cette option dans Delphi (je ne sais plus trop où), personnellement je préfère ne pas le faire.

Bonne prog' :-p
3
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
29 juil. 2004 à 16:35
En phase de débogage, il est normal qu'il se produise un exception, juste pour signaler au programmeur qu'une exception s'est produite et quelle est son type.
Dans la mesure où tu implémentes une gestion d'erreur, l'utilisateur lambda ne verra pas cette erreur se produire, sauf si le type que tu interceptes (ici EConvertError ) n'est pas le type qui a déclenché l'exception, ni un de ses sous-types. Mais comme EConvertError descend directement de Exception, les risques sont plutôt limités.
Personnellement, je ne suis pas partisan de désactiver la gestion des exceptions avec Delphi car c'est le seul moyen de savoir qu'on a bien couvert un type d'erreurs et de le traiter correctement.
Quant à la fonction StrToIntDef, elle ne fait rien d'autre que d'intégrer cette erreur de conversion. Mais elle a l'inconvénient de toujours renvoyer une valeur par défaut, permettant ainsi la poursuite du traitement même avec une valeur qui n'est pas celle saisie par l'utilisateur. Cela peut donner des résultats imprévisibles au bout du compte...
May Delphi be with you
3
cs_haklia Messages postés 41 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 30 avril 2006
29 juil. 2004 à 22:42
zut désolé, g mon browser qui m'avait coupé la fin du message de delphiprog

plus de question pour le moment alors..... encore merci

PS aux webmaster : c possible de modifier un message qu'on vient de poster ? sinon ca serait bien
3
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
29 juil. 2004 à 19:58
En effet, la fonction StrToIntDef n'est pas toujours indiquée. Il faudra de toute façon gérer la valeur retournée par défaut, ça vaut mieux !

Je préfère personnellement filtrer la saisie au moment où l'utilisateur entre les données dans l'Edit (évènement OnKeyPress).
0

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

Posez votre question
cs_haklia Messages postés 41 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 30 avril 2006
29 juil. 2004 à 22:40
merci beaucoup a tous les 2. je verrai ca demain.

c quoi la difference entre strtoint et strtointdef ????

encore merci
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
29 juil. 2004 à 23:13
Pour connaitre la différence entre StrToInt et StrToIntDef, je te conseille de prendre l'habitude de te reporter à l'aide en ligne de Delphi. C'est une bonne habitude à prendre pour nepas passer trop de temps à attendre une réponse sur les forums.

La modification d'un message par son auteur n'est pas prévue. Néanmoins, tu peux en demander la suppression si tu le souhaites. Un modérateur se chargera de le faire.
A+
May Delphi be with you
0
Rejoignez-nous