Bonjour,
Les messages d'erreur du style "Votre application a provoqué une classe d'exception avec le message "Processus stoppé", c'est très bien mais quelquefois, on aimerait aussi avoir le numéro de la ligne où se trouve l'erreur.
J'ai trouvé une façon de l'avoir. J'ai téléchargé à l'adresse suivante:
http://www.jirihajek.net/delphi/ExceptLog.htm
deux fichiers : Exceptlog.pas et MemCheck.pas
et je les ai copiés dans le répertoire de mon programme.
Dans ma Unit1, j'ai ajouté "Uses Exceptlog" conformémént aux instructions, puis dans l'Edi, j'ai cliqué sur: Projet / Options / Lieur / Informations de débogage TD32.
Et j'ai lancé mon petit programme très simple:
x:= 1-1;
x:=1/x;
showmessage(inttostr(x));
J'ai obtenu le message d'erreur traditionnel (division par zéro) mais en plus, ô miracle, il s'est créé un fichier except.log dont le contenu était le suivant:
Dans la ligne commençant par call stack - 3, j'ai bien le numéro de la ligne où se trouve l'erreur. (ligne 11).
Du coup, je me demande s'il ne serait pas possible de créer une fonction "NumLigne" qui me donnerait le numéro de la ligne en cours. Je pourrais alors écrire:
showmessage("Le programme passe bien par la ligne "+inttostr(numligne) );
ça me serait souvent utile mais j'avoue être incapable de comprendre quoi que ce soit aux deux fichiers téléchargés. Si quelqu'un y comprend quelque chose et pouvait me tuyauter un peu, ce serait sympa.
A voir également:
Trouver le numero de la ligne en cours d'exécution
dubois77
Messages postés675Date d'inscriptionjeudi 17 avril 2008StatutMembreDernière intervention19 février 201914 3 sept. 2013 à 16:19
Salut
tu écris :
"Du coup, je me demande s'il ne serait pas possible de créer une fonction "NumLigne" qui me donnerait le numéro de la ligne en cours. Je pourrais alors écrire:
showmessage("Le programme passe bien par la ligne "+inttostr(numligne) ); "
ça ne correspondras pas forcément à une erreur ou alors c'est balot de faire volontairement une erreur !
par contre tu peux partout rajouter :
"showmessage('Le programme passe bien par la ligne xxx' ); " ou il te suffit à chaque fois de remplacer xxx en dur avec le numéro de la ligne correspondante qui s'affiche dans ton éditeur
Bien sûr, j'ai pensé à écrire "Le programme passe bien par la ligne 1000" mais avec le temps, la ligne 1000 devient la ligne 1010 puis 1020, etc... Et comme, j'ai plusieurs fois ce genre de ligne dans le fichier, au bout d'un certain temps, ça donne quelque chose de très désordonné: j'ai par exemple deux fois "Le programme passe bien par la ligne 1000" ou alors le programme passe par la ligne 1000 après être passé par la ligne 1010.
J'ai pensé à écrire un
Inc(num_ligne)
au début de chaque ligne mais ce n'est pas réaliste.
En fait pour l'instant, j'écris
"Le programme passe bien par la ligne ##1000##"
et je lance un petit programme en turbo-pascal (que j'appelle depuis l'EDI) qui charge mon fichier, qui le lit en comptant les lignes et qui, quand il trouve un nombre entouré de ##, le remplace par le bon numéro de;ligne.
Je ne suis pas du tout certain que dans son état actuel, Delphi permette de retrouver le numéro de ligne pour autre chose que les erreurs et certes, je n'envisage pas de créer une erreur chaque fois que je veux marquer une ligne.
Si je le peux, je suggèrerai à la maison Embarcadero de créer cette fonction (en anglais, ce serait peut-être LineIndex) qui faciliterait la vie des programmeurs
3 sept. 2013 à 20:23
Bien sûr, j'ai pensé à écrire "Le programme passe bien par la ligne 1000" mais avec le temps, la ligne 1000 devient la ligne 1010 puis 1020, etc... Et comme, j'ai plusieurs fois ce genre de ligne dans le fichier, au bout d'un certain temps, ça donne quelque chose de très désordonné: j'ai par exemple deux fois "Le programme passe bien par la ligne 1000" ou alors le programme passe par la ligne 1000 après être passé par la ligne 1010.
J'ai pensé à écrire un
Inc(num_ligne)
au début de chaque ligne mais ce n'est pas réaliste.
En fait pour l'instant, j'écris
"Le programme passe bien par la ligne ##1000##"
et je lance un petit programme en turbo-pascal (que j'appelle depuis l'EDI) qui charge mon fichier, qui le lit en comptant les lignes et qui, quand il trouve un nombre entouré de ##, le remplace par le bon numéro de;ligne.
Je ne suis pas du tout certain que dans son état actuel, Delphi permette de retrouver le numéro de ligne pour autre chose que les erreurs et certes, je n'envisage pas de créer une erreur chaque fois que je veux marquer une ligne.
Si je le peux, je suggèrerai à la maison Embarcadero de créer cette fonction (en anglais, ce serait peut-être LineIndex) qui faciliterait la vie des programmeurs