PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Division par 0
Division par 0
Iniciado por planisoft, jul., 06 2005 5:11 PM - 8 respostas
Publicado em julho, 06 2005 - 5:11 PM
Y a t'il un moyen d'empecher le plantage sur une division par 0.

Meme la gestion d,erreur ne fonctionne pas la dessue.


Merci de vos réponses.
Publicado em julho, 06 2005 - 6:03 PM
Teste la valeur du diviseur avant l'exécution de la ligne de la division !!!

si B<>0 alors
info(A/B)
sinon
Info("Division par 0 ")
fin

A++
Publicado em julho, 06 2005 - 9:43 PM
Bonjour,

Y a t'il un moyen d'empecher le plantage sur une division par 0.

Meme la gestion d,erreur ne fonctionne pas la dessue.


Un "Quand Exception" devrait fonctionner dans ce cas, Non !!

A+


--
Francis MOREL
http://wdmlist.free.fr
Publicado em julho, 07 2005 - 3:14 PM
Malheureusement la gestion des exceptions ne fonctionne pas pour une division par 0.

Etant donné que je n,ai pas le controle sur les formules qui seront calculées (défini par l'usager) j,aimerais pouvoir trapper cette erreur, surtout que ca cause un redémarrage de windows (xp) avec tout ce que cela implique ( vérification de l'intégrité du disque au démarrage).

Si quelqu'un a une idée , je suis preneur.

Merci
Publicado em julho, 07 2005 - 10:03 PM
Salut Jean,

> Malheureusement la gestion des exceptions ne fonctionne pas pour une
division par 0.

Je te suggére de bien regarder, c'est ce que j'utilise quand je veux forcer
une erreur.
Maintenant, que ca ne fonctionne pas comme tu le veux , peut-être.
Mais pout trapper les erreurs c'est 100% opérationnel


Etant donné que je n,ai pas le controle sur les formules qui seront

calculées (défini par l'usager) j,aimerais pouvoir trapper cette erreur,
surtout que ca cause un redémarrage de windows (xp) avec tout ce que cela
implique ( vérification de l'intégrité du disque au démarrage).

--
Francis MOREL
http://wdmlist.free.fr
Publicado em julho, 08 2005 - 9:39 AM
Bonjour,

Je viens de tester la division par 0, dans une ardoise magique (texte exécuté par la fonction Compile).

Description_de_l_erreur = 15/0

J'obtiens simplement le message :

Erreur à la ligne n°1 : Division par 0

Le début de mon code, en initialisation de ma fenêtre est :

QUAND EXCEPTION
Erreur("Une erreur est survenue dans la fenêtre",ExceptionInfo(errMessage))
Info("Erreur : " + ExceptionInfo(errComplet))

// On réactive les exceptions
ExceptionActive()
// On reprend le traitement
RepriseSaisie()
FIN

Le code lié à la fonction Compile est une adaptation :

sResultatCompile = Compile("Compilation1", Code_à_tester)
SELON sResultatCompile
CAS "" :
QUAND EXCEPTION DANS
// Exécution de la procédure compilée dynamiquement
ExécuteTraitement("Compilation1",trtProcédure)
FAIRE
// Affichage des erreurs d'exécution
Description_de_l_erreur += "Erreur à la ligne n°"+(ExceptionInfo(errLigne))+" : "+ExceptionInfo(errRésumé)+RC
SI ExceptionInfo(errPendant)<>"" ALORS Description_de_l_erreur += CR + "Pendant : "+ExceptionInfo(errPendant) +RC
SelectionneLigne(ExceptionInfo(errLigne),"Code_à_tester",ExceptionInfo(errInfo))
FIN
CAS "ERR" : sResultat = "Compilation impossible. "+RC+ErreurInfo()
Description_de_l_erreur = sResultat
AUTRE CAS : sResultat = sResultatCompile
Description_de_l_erreur = sResultat
FIN

Voilà...

Bien cordialement,

Jacques De Schryver
Publicado em julho, 08 2005 - 10:48 AM
Bonjour Jacques,

> Je viens de tester la division par 0, dans une ardoise magique (texte
exécuté par la fonction Compile).

Description_de_l_erreur = 15/0

J'obtiens simplement le message :

Erreur à la ligne n°1 : Division par 0


Alors tu n'as vraiment pas de chance, car sur mon WD9 ça marche même dans
une fonction compile.
Je viens de faire le test exprès.
As tu bien testé ton code ?
Par contre sur une division par 0 il faut a mon avis sortir de la procédure
et pas la relancer, ou alors changer le code, car ca risque d'être sans fin
!!!

Amicalement

--
Francis MOREL
http://wdmlist.free.fr
Publicado em julho, 08 2005 - 11:50 AM
Bonjour,

Comme je l'ai écrit, cela fonctionne parfaitement.

La première zone de texte contient le code :

description_de_l_erreur = 15/0

Le contenu de la première zone est exécuté par la fonction Compile

La seconde zone de texte, baptisée description_de_l_erreur
reçoit le résultat, soit le message d'erreur :

division par zéro en ligne 1.

On peut dès lors exécuter des fichiers texte sans rien planter.

Bien cordialement,

Jacques De Schryver
Publicado em julho, 08 2005 - 3:58 PM
Effectivement en version 9 je peux intercepter l'erreur, mais mon appli est en 7.5 et je ne peux pas la migrer présentement.

Je continue mes recherches.

Merci pour vos réponses.