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

Langage Delphi Discussion :

La valeur affectée à X n'est jamais utilisée


Sujet :

Langage Delphi

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut La valeur affectée à X n'est jamais utilisée
    Bonjour à tous

    J'ai un avertissement pour ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            if Ok then begin
                ModeleEnCour.text:=ModeleChampion.text;         //Évolution un nouveau modèle meilleur
                SSEL:=SSEC;
                result:=true;// *****************ici
            end else break;
    Mais si je fais cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
             result:=Ok OR result;
            if Ok then begin
                ModeleEnCour.text:=ModeleChampion.text;         //Évolution un nouveau modèle meilleur
                SSEL:=SSEC;
                //result:=true;
            end else break;
    ou cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            if Ok then begin
                ModeleEnCour.text:=ModeleChampion.text;         //Évolution un nouveau modèle meilleur
                SSEL:=SSEC;
                result:=true;
            end;
            if not Ok then break;
    Je ne l'ai plus

    Commentaires... suggestions ?

  2. #2
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 491
    Points : 2 756
    Points
    2 756
    Billets dans le blog
    10
    Par défaut
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            result:=false;
            if Ok then begin
                ModeleEnCour.text:=ModeleChampion.text;         //Évolution un nouveau modèle meilleur
                SSEL:=SSEC;
                result:=true;// *****************ici
            end else break;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            result:=OK;
            if Ok then begin
                ModeleEnCour.text:=ModeleChampion.text;         //Évolution un nouveau modèle meilleur
                SSEL:=SSEC;
            end else break;
    Sinon la valeur result est dans un état indéterminé si tu ne vérifie pas la condition

  3. #3
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    Bonjour,

    Il me semble que tu n'indiques pas l'avertissement en question, quel est l'avertissement que le compilo indique ?

    As tu initialisé la variable Result ?

  4. #4
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    Ha ok, l'avertissement est dans le titre...

    Ma réponse s'est croisée avec celle d'Alweber, c'est peut être effectivement un problème d'init.

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 685
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 685
    Points : 13 102
    Points
    13 102
    Par défaut
    Result se voit affecter deux fois une valeur sans qu'il y ait de traitement sur cette variable entre ces deux affectations.

    Ton code doit ressembler à quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for ... do
    begin
      ...
      if Ok then begin
        ModeleEnCour.text:=ModeleChampion.text; 
        SSEL:=SSEC;
        result:=true;   // Provoque l'avertissement puisque Result est réaffecté par la suite sans avoir été utilisé entre-temps
      end else break;
    end;
     
    Result := Ok;  // Rend la première affectation inutile
    Alors que le dernier cas sera plutôt écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Result := FALSE;  // Cette initialisation est nécessaire si OK est toujours FALSE
     
    for ... do
    begin
      ...
      if Ok then begin
        ModeleEnCour.text:=ModeleChampion.text; 
        SSEL:=SSEC;
        result:=true;
      end else break;
    end;
    En bref, c'est ce qui est autour des quelques lignes que tu nous montres qu'il faut regarder.

  6. #6
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par sgmsg Voir le message
    Commentaires... suggestions ?
    ce message indique généralement que la valeur affectée à une variable n'est jamais exploitée d'une part, et systématiquement remplacée d'autre part, c'est donc dans la suite de ton code qu'il faut voir ce qu'il se passe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    for ... do
    begin
      ...
      if Ok then begin
        ModeleEnCour.text:=ModeleChampion.text; 
        SSEL:=SSEC;
        result:=true;   // Provoque l'avertissement puisque Result est réaffecté par la suite sans avoir été utilisé entre-temps
      end else break;
    end;
    ...
    Result := True; // ici par exemple, l'affectation au dessus ne sert à rien
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    Merci de votre intérêt. [Edité pour simplifier]

    Voici un code qui recré l'avertissement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function Tform1.test:boolean;
    var ok:boolean;
    begin
        result:=false;
        repeat
            Ok:=random(2)>0;
            if not Ok then begin
                Ok:=random(2)>0
            end;
            if Ok then begin
                result:=true;
            end else break;
        until false;
    end;

    Voici le bout de code "corrigé" :
    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
    function Tform1.test:boolean;
    var ok:boolean;
    begin
        result:=false;
        repeat
            Ok:=random(2)>0;
            if not Ok then begin
                Ok:=random(2)>0
            end;
            if Ok then begin
                result:=true;
            end;
            if not Ok then break;
        until false;
    end;

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    j'imagine que le [Édité pour simplifier] fait référence au code, qui a tellement été simplifié qu'il en devient un peu "absurde" ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 685
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 685
    Points : 13 102
    Points
    13 102
    Par défaut
    Citation Envoyé par sgmsg Voir le message
    Voici un code qui recré l'avertissement
    Ce qui n'est pas illogique.

    Les résultat de random(2) sera 0 ou 1. La condition Ok est toujours respectée (>=0) et donc Result systématiquement forcé à vrai. result := false est inutile.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    @ Andnotor
    Le compilateur "ne sait pas" que le résultat est toujours vrai. Il faudrait pour ça qu'il ait l'intelligence de le démontrer.
    Peu importe, en remplaçant "random(2)>=0", par "random(2)>0" l'avertissement est toujours affiché.

    @SergioMaster
    Le code est simplifié pour reproduire le comportement pas pour envoyer l'homme sur la Lune...

    ...

    Ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            if Ok then begin
                result:=true;
            end else break;
    est fonctionnellement strictement identique à celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            if Ok then begin
                result:=true;
            end;
            if not Ok then break;
    Le premier code
    Si Ok est vrai alors pose result vrai
    Sinon[Si ok est faux] alors sort de la boucle;

    Le second code
    Si Ok est vrai alors pose result vrai;
    Si Ok est faux alors sort de la boucle;

    C'est assez simple comme logique. Le but du code est que Si le traitement est exécuté au moins une fois alors la fonction retourne vrai.

    Pourtant le compilateur Delphi retourne un avertissement pour le premier code et aucun pour le second.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    Citation Envoyé par ALWEBER Voir le message
    ...

    Sinon la valeur result est dans un état indéterminé si tu ne vérifie pas la condition
    Non puisque result est initialiser à faux au début de la procedure. Il y a toute une série de condition à respecter avant d'essayer de résoudre le problème...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    result:=false;
    if condition1 then exit;
    if condition2 then exit;
    ...
    Ce qui allège le code de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if condition1 then begin result:=false;exit;end;
    if condition2 then begin result:=false;exit;end;
    ...

  12. #12
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 857
    Points : 11 291
    Points
    11 291
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par sgmsg Voir le message
    Voici un code qui recrée l'avertissement
    Bonjour,

    Avec Rio 10.3 CE sous W10 et le code qui suit, je n'obtiens pas d'avertissement (cible exe win32), et avec l'autre non plus d'ailleurs...

    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
    function Tform1.Test: Boolean;
    var
     Ok:boolean;
    begin
      result:=false;
      repeat
        Ok:=random(2)>0;
        if not Ok then begin
          Ok:=random(2)>0
        end;
        if Ok then begin
          result:=true;
        end else break;
      until false;
    end;
    Le message d'avertissement est-il réellement "La valeur affectée à X n'est jamais utilisée " ? Quelle est la variable X ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    Bonjour,

    Avec Rio 10.3 CE sous W10 et le code qui suit, je n'obtiens pas d'avertissement (cible exe win32), et avec l'autre non plus d'ailleurs...

    Le message d'avertissement est-il réellement "La valeur affectée à X n'est jamais utilisée " ? Quelle est la variable X ?
    Sérieux?
    J'utilise Seattle...
    Morale c'est un bogue des versions antérieures Delphi.

    X est une fonction, result est le resultat de la fonction un peu comme une affectation de variable.

    Merci tourlourou

    Merci à tousNom : Avertissement.png
Affichages : 225
Taille : 86,2 Ko

  14. #14
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 857
    Points : 11 291
    Points
    11 291
    Billets dans le blog
    6
    Par défaut
    Étrange !
    Avec le code suivant, je n'ai pas d'avertissement ou conseil non plus (auparavant, j'utilisais la valeur de Test1 comme celle de Test2 dans le if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      Test1;
      if Test2 then
        ShowMessage('OK')
      else
        ShowMessage('raté !');
    end;
    Mais ce n'est pas un bogue pour autant, mais un conseil judicieux : pourquoi définir une fonction plutôt qu'une procédure si on n'utilise pas sa valeur de retour ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  15. #15
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,

    aucun conseil ni avertissement à la compil avec ce code sous D7 :

    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
    34
    35
    36
    37
    38
    39
    40
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TForm1 = class(TForm)
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
        function Test: Boolean;  end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    function Tform1.Test: Boolean;
    var
     Ok:boolean;
    begin
      result:=false;
      repeat
        Ok:=random(2)>0;
        if not Ok then begin
          Ok:=random(2)>0
        end;
        if Ok then begin
          result:=true;
        end else break;
      until false;
    end;
     
    end.
    Par contre, avant d'appeler Ramdom, il faut appeler Randomize (mais c'est peut être fait dans le code complet)

    A+
    Charly

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    Étrange !
    ...
    Mais ce n'est pas un bogue pour autant, mais un conseil judicieux : pourquoi définir une fonction plutôt qu'une procédure si on n'utilise pas sa valeur de retour ?
    Parce que j'utilise le résultat de la fonction pour terminer le processus d'une fonction qu'il l'appelle.

    Citation Envoyé par Charly910 Voir le message
    Bonjour,

    aucun conseil ni avertissement à la compil avec ce code sous D7 :...

    Par contre, avant d'appeler Ramdom, il faut appeler Randomize (mais c'est peut être fait dans le code complet)

    A+
    Charly
    Je viens de vérifier avec D7, ce que j'aurais dû faire et tu as raison... pas d'avertissement

    Le random était simplement pour obtenir une réponse aléatoire afin d'éviter des ambiguités pour simplifier la compréhension du code.

  17. #17
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    bon il y a peut-être un bug dans le compilateur, mais quand je n'arrive pas à comprendre une code de 10 lignes à la 3ième lecture je me dis qu'il y a un truc pas net

    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
     
    function Tform1.test:boolean;
    var ok:boolean;
    begin
        result:=false;
        repeat
            Ok:=random(2)>0;
            if not Ok then begin
                Ok:=random(2)>0
            end;
            if Ok then begin
                result:=true;
            end else break;
        until false;
    end;
    si random(2) > 0 alors Result = True et je boucle
    si random(2) = 0 alors si random(2) > 0 alors result = True et je boucle
    si random(2) = 0 et si random(2) = 0 alors je quitte la boucle

    alors sauf à avoir une raison pour boucler, je dirais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Result := (Random(2) > 0) or (Random(2) > 0); // deux tentatives
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    bon il y a peut-être un bug dans le compilateur, mais quand je n'arrive pas à comprendre une code de 10 lignes à la 3ième lecture je me dis qu'il y a un truc pas net
    ...

    alors sauf à avoir une raison pour boucler, je dirais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Result := (Random(2) > 0) or (Random(2) > 0); // deux tentatives
    Bon le premier test est pour forcer l'introduction d'une variable quand il n'y a aucun élément initial.. autrement dit pour initialiser le vecteur vide à la première itération avec la valeur optimale du moment (car je ne peux pas faire de test statistique d'un modèle à une variable avec un modèle à zéro variable.

    Quand, on ne peut plus ajouter de variables, la routine se termine. Une autre routine vérifie si parmi toutes les variables ajoutées précédemment, on peut en retirer certaines.

    Ensuite on revient dans la routine initiale avec un vecteur contenant désormais des variables, et on tente d'en rajouter d'autres... Puis on repasse à la seconde qui tente de retirer d'autres variable. Ce processus se répète jusqu'au point où on ne peut plus ajouter de variables ni en retirer. Alors c'est terminer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Ok:=Nombre de Variable du modèle initiale=0
    if not Ok then begin Ok:=Il est justifier d_accepter une nouvelle variable;
    if Ok then begin ajoute la nouvelle variable;result:=true;end; 
    if not Ok then quitte la routine.
    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
    repeat
    ....
            Ok:=(ModeleEnCour.count=0);                               //premère variable insérer automatiquement accepte
            if not Ok then begin
                K:=Population-ModeleChampion.count-2;
                Fc:=K*(SSEL-SSEC);{/1}//SSEC
                //Ok:=FSnedecor(ModeleEnCour.count,ModeleChampion.count,Alpha)>Fc;
                Ok:=FSnedecor(1,Population-ModeleChampion.count,Alpha)>Fc;
            end;
            if Ok then begin
                ModeleEnCour.text:=ModeleChampion.text;         //Évolution un nouveau modèle qui est meilleur
                SSEL:=SSEC;
                result:=true;
            end;
            if not Ok then break;                                     //C'est fini;
        until false;

  19. #19
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Repeat
      ...
    Until False
    Je n'aurai jamais pensé à cela ! Il faut être sûr que le compilo l'accepte (car False ne peut jamais être égal à True !!) et ensuite que l'on sorte du Repeat.

    Je vais essayer pour voir

    A+
    Charly

  20. #20
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Repeat
      ...
    Until False
    Je n'aurai jamais pensé à cela ! Il faut être sûr que le compilo l'accepte (car False ne peut jamais être égal à True !!) et ensuite que l'on sorte du Repeat.

    Je vais essayer pour voir

    A+
    Charly
    c'est la syntaxe utilisée classiquement pour éviter un GOTO, c'est à dire une boucle inconditionnelle
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. La variable 'j' est déclarée mais jamais utilisée?
    Par Bruno13 dans le forum Langage
    Réponses: 8
    Dernier message: 17/10/2007, 08h56
  2. Réponses: 1
    Dernier message: 14/03/2007, 16h02
  3. Réponses: 3
    Dernier message: 18/07/2006, 10h17
  4. Réponses: 10
    Dernier message: 30/11/2004, 10h12
  5. [ Struts ] Erreur : l'action n'est jamais appelé
    Par romain3395 dans le forum Struts 1
    Réponses: 3
    Dernier message: 25/06/2004, 14h59

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