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

Flash Pascal Discussion :

Sortie de boucle


Sujet :

Flash Pascal

  1. #1
    Membre expérimenté
    Sortie de boucle
    Voilà, j'avais besoin de sortir d'une boucle après un traitement et j'ai eu évidemment le réflexe d'utiliser Break mais malheureusement, l'instruction n'est pas opérationnelle sous flashpascal2...

    Difficile de s'en passer...

    Il y a moyen de l'introduire dans Flashpascal ?

    anthony

  2. #2
    Expert éminent sénior
    bonne question

    Break et Continue sont en fait des GOTO déguisés...ça doit être faisable, mais peut-être pas sans une méchante rustine...je vais y réfléchir

    EDIT: bon ça va pas être simple, le compilateur considère le contenu de la boucle comme un code opaque...difficile d'y inclure des goto, il va falloir que je modifie la représentation interne du code

    en attendant, il est possible de mettre la boucle dans une fonction et d'utiliser Exit
    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
    29
    30
     
    program Project1;
     
    {$FRAME_WIDTH 550}
    {$FRAME_HEIGHT 400}
    {$FRAME_RATE 12}
    {$BACKGROUND $FFFFFF}
     
    uses
      Flash8;
     
    var
      l: TextField;
     
    procedure loop;
    var
      i: Integer;
    begin
      for i := 1 to 5 do
      begin
        l.Text := l.Text + ' ' + IntToStr(i);
        if i = 2 then
          Exit;
      end;
    end;
     
    begin
      l := TextField.Create(_root, 'l', 1, 10, 10, 100, 21);
      loop;
    end.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre expérimenté
    Ok, pour le exit l

    Sur le forum delphi, un exit dans une boucle pour sortir, ça les fait hurler .
    La question était là seulement pour faire propre...

    merci pour ta réponse immédiate

  4. #4
    Membre expert
    Salut

    Pas la peine d'idéaliser, même le GOTO peut être utile. Essayez de sortir de boucles for imbriquées sur plusieurs niveaux, vous verrez que le GOTO va simplifier grandement le code, il ne faut pas l'utiliser à mauvaise escient. Est-il plus efficace de produire un code alambiqué pour contourner un GOTO utile ?

    Ceci dit, il m'est arrivé une fois d'utiliser un GOTO.

    Dans la VCL même, il y a parfois des exit dans des boucles, cela ne perturbe pas le code ni le lecteur...

    @+

    M E N S . A G I T A T . M O L E M
    Debian 8.x 64bit, Lazarus 1.8 (FPC 3.0), Python 3 -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal
    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  5. #5
    Rédacteur/Modérateur

    Autrement, on peut faire comme ça, non ?

    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
    29
    30
    31
    32
    33
    program sortie_boucle;
     
    {$FRAME_WIDTH 550}
    {$FRAME_HEIGHT 400}
    {$FRAME_RATE 12}
    {$BACKGROUND $FFFFFF}
     
    uses
      Flash8;
     
    var
      l: TextField;
     
    procedure loop;
    var
      i: Integer;
      break: Boolean;
    begin
      i := 1;
      break := false;
      while (i <= 5) and not break do
      begin
        l.Text := l.Text + ' ' + IntToStr(i);
        if i = 2 then
          break := true;
        Inc(i);
      end;
    end;
     
    begin
      l := TextField.Create(_root, 'l', 1, 10, 10, 100, 21);
      loop;
    end.

  6. #6
    Membre expérimenté
    Merci pour vos réponses...le soucis n'était pas de trouver le moyen de sortir de ma boucle mais de savoir si le break pouvait exister sous flashpascal sans susciter trop de chamboulements.

    merci

  7. #7
    Rédacteur/Modérateur

    Je saisis l'occasion pour faire une humble demande à Paul. Pourrais-tu faire une simple liste des mots-clés du compilateur ?
    Pour le moment le seul moyen de savoir si une instruction est disponible, c'est de l'essayer !
    C'est vrai qu'il y a les exemples, mais ce serait quand même bien d'avoir une liste.

  8. #8
    Expert éminent sénior
    Citation Envoyé par Roland Chastain Voir le message
    Je saisis l'occasion pour faire une humble demande à Paul. Pourrais-tu faire une simple liste des mots-clés du compilateur ?
    Pour le moment le seul moyen de savoir si une instruction est disponible, c'est de l'essayer !
    C'est vrai qu'il y a les exemples, mais ce serait quand même bien d'avoir une liste.
    en même temps il n'y a pas tant de mot clé en Pascal, et il en manque peu

    voici une page que je viens de mettre à jour ceci dit
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store