Bonjour,
je souhaite que la fin d'une procédure mette fin au programme.
Y a-t-il un équivalent de Application.terminate en Delphi ?
Ou un autre moyen ?
Merci.
Bonjour,
je souhaite que la fin d'une procédure mette fin au programme.
Y a-t-il un équivalent de Application.terminate en Delphi ?
Ou un autre moyen ?
Merci.
Attention !
Halt(1); fait envoyer au programme une valeur de retour égale à 1, signalant en général une erreur d'exécution.
Il est donc possible que certains OS précise que le programmae s'est terminé sur une erreur, alors que ce n'est pas le cas.
Pour éviter ce genre de désagrément, on peut renvoyer une code d'erreur égal à 0, Halt(0);, ou, plus simplement, omettre le code d'erreur dans l'appel, comme ça : Halt;
A+
cool !!
Je ne savais même pas qu'on pouvais simuler une érreur avec Halt (1) en pascal !!! Je connaissais Halt, mais pas qu'on pouvais mettre des trucs entre parentéses !!!!!
Comme quoi, on en apprends tout les jours !!!
@++ Mathieu
Chaque jour, l'homme crée des choses plus grandes, meilleures et sûres, et chaque jour, la nature crée des idiots plus performants. Pour l'instant, je pense que la nature gagne.
Bonjour
Je me permets une remarque de "génie logiciel", comme on dit.
Un programme ou une proc. doit avoir UNE entrée (un début. c'est toujours vrai, à moins d'utiliser des instructions du style goto) & UNE sortie (une fin.) Terminer un programme en cours de procédure peut amener des résultats pas toujours prévisibles. De plus, ça complique le débogage. Ensuite, ça ne facilite pas toujours (rarement ?) la conception de la chose. Enfin, quand on doit faire évoluer le code, on peut se demander longtemps pourquoi le programme s'est terminé & comment...
Donc, les exit & équivalents sont à éviter, autant que faire se peut (il paraît qu'il est des cas où on ne peut les éviter. Personnellement, je n'en ai JAMAIS eu besoin).
Cordialement
« Un peuple qui est prêt à sacrifier un peu de liberté contre un peu de sécurité, ne mérite ni l'une, ni l'autre, et finira par perdre les deux. »
Attribué indistinctement à :
Thomas Jefferson
Benjamin Franklin
Albert Einstein !
moi non plus d ailleur ... mais je ne suis pas un professionnel ..
6*8 =42
Tout programme a un début et une fin... En effet, et seule la manière d'y arriver peut changer.
Halt ne termine pas le programme comme Windows sait le faire (), mais le termine proprement, en vidant la pile, et en appelant les procédures de sortie. Il n'y a donc strictement aucun risque à ce niveau là. Pas de résultats "imprévisibles" donc.
Le fait de banir Exit de sa programmation est, pardonnez l'expression, stupide ! Exit ne fait que sauter en fin de procédure, comme si tout le bloc qui le suivait jusqu'à la fin de la procédure était dans un bloc if...then...end; C'est donc une programmation tout à fait correcte, et qui permet au contraire de bien voir à quel endroit on désire terminer telle ou telle procédure.
Autant renoncer à utiliser Halt peut se comprendre, que supprimer Exit de son vocabulaire me paraît pour le moins étrange.
J'ajouterais qui plus est que le fait d'utiliser Halt permet de bien voir qu'il y a eu erreur d'exécution.
A+
Pourquoi tu ne mets pas un booléen (données-résultats comme on dit) et tu termines ta procedure si ce booléen est a vrai et pareil pour ton programme ce serait vachement plus correct.
Le probleme, Sinclair, c que si tu utilise halt pour sortir de ta procedure
ben... comment dire si tu fé des cours de prog,ton prof va t'arracher
il va te dire que c comme utilisé un goto ou un exit,
en bref ca fait un peu "tache" dans le programme puisque tu rend la main
au systeme en plein programme.
De plus la solution du "flag" de vinyl187 est bien plus "propre" tout en sachant que lorsqu'on arrive a la fin de la procedure, on retourne generalement dans la procedure principale.
Bon courage.
-=¤[PENGO]¤=- Keep Privacy Public
reste a savoir , si sa change vraimment quelque chose , ... non , quand on a des prof derriere nous tres stric dac , mais la , pour les projet perso , on peut tous de meme utiliser un goto de temps en temps non ?
6*8 =42
mais ca revient pas a la procédure...
en fait c'est un menu
et qd on choisi le code F : ca quitte le programme... voila c tout
normalement pour ton menu tu appelles une procedure et tu as surement un repeat il suffit de mettre ton booléen a vrai lorsque l'utilisateur tape F.
et tu finis ta boucle lorsque le booléen est vrai.C'est peut etre plus chiant mais ce sont des habitudes a prendre.
Tu veux du concret ? hé ben tiens :
Alors voilà pour le code. Ensuite une petite anecdote tirée de mon expérience personelle : ça fait environ deux mois que je suis en IUT informatique mais à peu près deux ans et demi que je programme tout seul dans mon coin, à faire des boucles repeat qui lit les touches au clavier ( entre autres car je fais pas que ça !!! ). J'ai donc ressenti un vrai choc quand mes profs m'ont demandé de ne plus utiliser d'exit, d'halt ou de goto ou de break ou de continue, et d'être rigoureux. Ca fait un véritable changement et c'est super dur de s'adapter et de perdre ses habitudes, mais maintenant j'ai vraiment la sensation de faire du code propre et qui tourne sans danger... Alors ça s'applique dans ce cas mais ça peut s'appliquer dans d'autres et je pense que c'est mieux de prendre de bonnes habitudes dès le début.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 uses crt; var sortie:boolean; var ch:char; begin sortie:=false; while not sortie do begin ch:=readkey; if ch='F' then sortie:=true; end; end;
a+
M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager