IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

[total débutant] Quitter une procédure avant la fin


Sujet :

Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 114
    Points : 133
    Points
    133
    Par défaut [total débutant] Quitter une procédure avant la fin
    Heu...je sais que ca a l'air bete comme question mais c'est toujours comme ca avec moi

    Je voulais savoir si il y avait une instruction en Pascal Objet qui permette de quitter une procédure avant d'en avoir atteint la fin (dans le cas où la procédure est très longue et bourrée de conditions) ? J'ai repris mes cours de pascal de l'époque, mais je n'ai rien trouvé (ca commence à dater d'ailleurs )


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure P_test;
    begin
     
    if {condition_pas_ok} then {quitter_la_procedure};
     
    {suite de la procedure
    .
    .
    }
     
    end;

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Tu peux utiliser pour cela exit

    Cordialement

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 80
    Points : 199
    Points
    199
    Par défaut
    Bonjour,

    Juste une question (en réponse à ta question ) : l'instruction "exit" ne fonctionne pas ? Je crois me souvenir qu'en Turbo Pascal, ça existait déjà, et en Delphi, on s'en sert pas mal, alors bon...

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    dans les fonctions, break fonctionne aussi je crois mais je ne sais pour les procédures.

    F.V

  5. #5
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Citation Envoyé par F.Victoire
    dans les fonctions, break fonctionne aussi je crois mais je ne sais pour les procédures.

    F.V
    Non break c'est uniquement pour sortir d'une boucle. La seule solution est exit que ce soit pour une procédure ou une fonction.

  6. #6
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 562
    Points
    3 562
    Par défaut
    Exit :
    Dans Delphi,la procédure Exit fait immédiatement passer le contrôle d'exécution en dehors de la procédure.Si la procédure en cours correspond au programme principal,Exit termine l'exécution du programme.
    Break :
    La procédure Break fait quitter le flux de contrôle dans le code Delphi d'une instruction for,while ou repeat et passe àla prochaine instruction qui suit l'instruction de boucle.

    Un appel àBreak doit être contenu dans une instruction for,while ou repeat,ou bien le compilateur génère une erreur.
    Halt :
    La procédure Halt exécute une fin anormale d'un programme et renvoie le contrôle au système d'exploitation.
    Continue :
    Dans le code Delphi,la procédure Continue poursuit le flux de contrôle jusqu'àla prochaine itération d'une instruction for,while ou repeat.

    Le compilateur renvoie une erreur si un appel àContinue se trouve en dehors d'une boucle for,while ou repeat.
    (passe directement à l'itération suivante...

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 114
    Points : 133
    Points
    133
    Par défaut
    Merci messieurs pour toutes ces précisions

    J'avais essayé Break, Leave, Quit, Terminate....mais pas Exit Voilà ce que sais que de bosser chaque jour dans un langage différent !

    merci encore !

  8. #8
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Citation Envoyé par Waskol
    La procédure Break fait quitter le flux de contrôle dans le code Delphi d'une instruction for,while ou repeat et passe àla prochaine instruction qui suit l'instruction de boucle.

    Un appel à Break doit être contenu dans une instruction for,while ou repeat,ou bien le compilateur génère une erreur.
    Sauf sur Delphi 2005 où mettre un break en dehors d'une boucle ne génère pas d'exception mais une erreur en interne dans l'éditeur.

  9. #9
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Et si tout simplement tu faisais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure P_test;
    begin
     
      if {condition_ok} then
      begin
          {suite de la procedure
         .
         .
         }
        end;
    end;
    J'aime pas trop ces mots réservés qui, certes, facilitent le code mais le rende "sale"...
    On peut, dans 99.9999999% des cas l'éviter en repensant un minimum son code...
    Ce n'est évidemment qu'un avis personnel

  10. #10
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 562
    Points
    3 562
    Par défaut
    Je suis à 99,99999999999999999% d'accord avec Pedro.

    Les Goto déguisés, ce n'est pas beau !

    Celà dit un petit exit de temps à autre...

    le 0,0000000000000000001% qui reste tu peux le garder a usage personnel.

  11. #11
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Citation Envoyé par Pedro
    J'aime pas trop ces mots réservés qui, certes, facilitent le code mais le rende "sale"
    Citation Envoyé par Waskol
    le 0,0000000000000000001% qui reste tu peux le garder a usage personnel.
    Ourghhh!

    Allez faire un tour dans le code de la VCL et vous verrez qu'une utilisation intelligente de exit de break simplifie le code et permet des gains lors du traitement.
    Lors de l'écriture de son code, avoir une approche 'philosophie VCL' rend tout sauf sale.

    Personnellement, je les utilise assez souvent dès que c'est nécessaire à peu près dans les mêmes proportions que la VCL, et je ne pense pas que mon code soit particulièrement sale.

  12. #12
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 205
    Points : 92
    Points
    92
    Par défaut
    Je suis surpris que l'instruction application.processmessages n'aie pas été citée dans cette longue et vielle discussion. Elle est pourtant très simple à utiliser et utile dans certains cas.
    Par exemple (quel que peu caricatural) un calcul long en boucle que l'on interrompt quand on veut en cliquant sur Button1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    var
      Form1: TForm1;
      stp:boolean;
      n:integer;
     
    implementation
     
    {$R *.DFM}
     
    procedure TForm1.startClick(Sender: TObject);
    begin
         stp:=false;
         n:=0;
         repeat
               n:=n+1;
               Edit1.text:=inttostr(n);
               form1.Refresh;
               application.processmessages;
         until((n>=1000000)or(stp=true));
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
         stp:=true;
    end;
     
    end.

  13. #13
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 798
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 798
    Points : 5 588
    Points
    5 588
    Par défaut
    Déterrer un sujet clôturé depuis 17 ans pour écrire un commentaire hors sujet, ça mérite un pouce vers le bas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Afficher une face avant graphe XY
    Par Navcom83 dans le forum LabVIEW
    Réponses: 2
    Dernier message: 30/03/2009, 10h15
  2. Comment sortir de la procédure avant la fin ?
    Par promenneur77 dans le forum Débuter
    Réponses: 4
    Dernier message: 24/01/2008, 11h50
  3. [SQL SRV 05] Quitter une procédure si ERREUR
    Par olbi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/07/2007, 10h23
  4. Réponses: 4
    Dernier message: 31/08/2006, 12h25
  5. Démission: quitter la boite avant la fin du préavis
    Par catwalk dans le forum Démission
    Réponses: 4
    Dernier message: 29/08/2006, 18h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo