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 :

précision de syntaxe


Sujet :

Langage Delphi

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    857
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 857
    Points : 267
    Points
    267
    Par défaut précision de syntaxe
    bonjour,

    comme j'ai appris Delphi tout seul j'a parfois quelques lacunes sur des choses simples

    exemple
    comment le compilateur interprete la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (var1=true) or ((var1=false) and (var2=true)  and (MessageDlg('Texte de confirmation',mtConfirmation, [mbyes, mbNo], 0) = mrYes)) then var3:=true else var3:=false;
    est ce que la question de confirmation ne sera posée à l'utilisateur que si var1 est faux et que var2 est vrai



    a+

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Le MessageDlg ne sera pas appelé si Var1 est à True.
    A moins que tu n'utilises la directive {$B+} pour une évaluation complète de la condition.

    A noter que Var1 = False ne sert pas à grand chose dans la 2° partie de la condition.

    @+

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 759
    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 759
    Points : 5 482
    Points
    5 482
    Par défaut
    J'aurais tendance à dire qu'en codant comme ça il va te poser la question à tout les coups.

    Je pense que ce que tu veux faire ressemble plus à ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (var1=true) or ((var1=false) and (var2=true)) then
    begin
      if (MessageDlg('Texte de confirmation',mtConfirmation, [mbyes, mbNo], 0) = mrYes) then
        var3 := true;
    end
    else
      var3 := false;

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 812
    Points : 13 527
    Points
    13 527
    Par défaut
    Claudius a raison .

    Maintenant, simplifies un peu l'écriture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (var1=true) or ((var1=false) and (var2=true)  and (MessageDlg('Texte de confirmation',mtConfirmation, [mbyes, mbNo], 0) = mrYes)) then var3:=true else var3:=false;
     
    //est équvalent à:
     
    var3 := var1 or (var2 and (MessageDlg('Texte de confirmation',mtConfirmation, [mbyes, mbNo], 0) = mrYes)));

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var3 := var1 or (var2 and (MessageDlg('Texte de confirmation',mtConfirmation, [mbyes, mbNo], 0) = mrYes)));
    Voilà, moi aussi je préfère aussi le "tout-en-un".

  6. #6
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut
    Salut
    Un peut de logique booléenne
    0 and 0 = 0
    0 and 1 = 0
    1 and 0 = 0
    1 and 1 = 1
    de plus :
    0 or 0 = 0
    0 or 1 = 1
    1 or 0 = 1
    1 or 1 = 1
    et respecter l'ordre des operateur
    and precède or donc on effectu les and avant les or
    le reste c'est du detail
    cordialement

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    857
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 857
    Points : 267
    Points
    267
    Par défaut réponse
    merci pour les infos

    la syntaxe simplifée c'est top !
    le jour où je serai capable de pondre du code propre comme ça ............


    a+

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

Discussions similaires

  1. [XPath] petite précision sur type de syntaxe
    Par Royd938 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 15/06/2006, 12h13
  2. Syntaxe TASM <-> MASM
    Par LFC dans le forum Assembleur
    Réponses: 3
    Dernier message: 28/02/2003, 15h56
  3. Réponses: 8
    Dernier message: 13/01/2003, 17h45
  4. Timer de précision
    Par guigui dans le forum MFC
    Réponses: 1
    Dernier message: 04/12/2002, 15h21
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

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