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 :

Syntaxe if then else imbriqués


Sujet :

Delphi

  1. #1
    Membre actif
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Points : 224
    Points
    224
    Par défaut Syntaxe if then else imbriqués
    Bonjour,

    Je galère depuis un moment sur un problème de syntaxe avec ce code. Il fonctionnait bien jusqu'à ce que je rajoute un if then else à l'intérieur d'un autre et là je me fais jeter par le compilateur au niveau du dernier Else parce qu'il faudrait ";" ou pas (suivant les essais multiples d'écriture).

    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
    begin //début de la procédure
      if (TE1='') xor (TE2='') then
        begin
          If TE1='' Then
            begin
              TB2:=strtofloat(te2);
              Edit1.text := FormatFloat('0.000', TB2 / TCoeff[Indice]);
            end
          Else
            begin
              if (Edit3.text<>'') and (Edit4.text<>'') then
                TB1:= strtofloat(TE1) * strtoint(Edit3.Text)/strtoint(Edit4.Text)
              else
                TB1:=strtofloat(TE1) ;
     
              Edit2.text := FormatFloat('0.000', TB1 * TCoeff[Indice]) ;
            end
      Else
        showmessage ('les 2 fenêtres ne peuvent être vides ou pleines ensembles');
     
    end; //fin de la procédure

    Je n'ai pas réussi à trouver ni la solution ni de un tuto expliquant la règle d'utilisation des ";" et ou des "End" dans cette situation.

    Si vous connaissez un site, je vous remercie d'avance

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 132
    Points
    15 132
    Par défaut
    Il manque un end avant le dernier else.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Membre actif
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Points : 224
    Points
    224
    Par défaut
    ah oui, ça compile maintenant.


    ce qui me déroute, c'est l'absence de End (if) en clôture du If ( enfin... pas que ça ....)

    merci beaucoup

  4. #4
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par Algoplus Voir le message
    ce qui me déroute, c'est l'absence de End (if) en clôture du If ( enfin... pas que ça ....)
    C'est du Pascal, pas du C.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if condition then instruction1 else instruction2;
    //
    if condition then
    begin
      instruction1;
      instruction2;
    end else
    begin
      instruction3;
      instruction4;
    end;
    T'oublieras pas de cliquer sur en bas de page, si tu repasses par ici.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  5. #5
    Membre actif
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Points : 224
    Points
    224
    Par défaut
    Oui, oui j'avais bien compris que ce n'était pas du C, mais ça reste un langage à apprivoiser.

    Ce que je retiens:

    Une instruction If then else ne se termine jamais par un end propre.
    s'il y a plusieurs instructions dans If ou else : => encadrement de ces instruction par begin / end sans ";"
    la marque de fin de if le plus externe est simplement le ";" final de l'instruction unique ou après le End du bloc d'instructions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if condition then
    begin
      instruction1;
      instruction2;
    end else
      instruction3;
    
      instruction4;
    On exécute les instruction du if ou l'instruction du else; et dans tous les cas l'instruction4.

    Merci encore

  6. #6
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    bonjour

    petite astuce pour ne pas te prendre le choux : mets des begin end avant d'écrire le code à l'intérieur, comme ça t'es certain de ne rien oublier

    si tu es sur une version récente il est même probable que l'EDI t'ajoute le END tout seul

    et pareil, sur les versions récentes tu peux utiliser Ctrl+D qui réinvente le source sur lequel tu travailles, ça permet de visualiser ce genre d'oublis (mais pas de Ctrl+Z possible, donc faut s'adapter).

  7. #7
    Membre actif
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Points : 224
    Points
    224
    Par défaut
    Bonjour et merci pour ces astuces.

    Malheureusement Delphi 7 édition personnelle ne propose pas ces facilités ( ou bien je n'ai pas su ...)

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

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par pprem Voir le message
    ...
    petite astuce pour ne pas te prendre le choux : mets des begin end avant d'écrire le code à l'intérieur, comme ça t'es certain de ne rien oublier
    ..
    Le plus peut être l'ennemi du bien. Pas tout à fait d'accord avec cette façon de faire qui démontrait souvent l'inexpérience du programmeur ou la confusion sur la manière de programmer (paradigme) avec d'autres langages ou bien l'utilisation d'automates de conversion.

  9. #9
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    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 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Bonjour,

    Tu peux télécharger la dernière version de Delphi ici, gratuite sous certaines conditions :

    D10.3 Community Edition

    L'IDE s'est améliorée, d'autres plateformes que Win32 sont prises en charge. Seul point noir par rapport à D7, l'aide sur F1 est beaucoup moins efficace (ou bien je n'ai pas trouvé encore comment m'en servir ).

    A+
    Charly

  10. #10
    Membre actif
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Points : 224
    Points
    224
    Par défaut
    Bonjour

    l'intérêt de changer de version aurait été, pour moi, de bénéficier de l'aide par F1.

    windows 10 à supprimer la gestion des fichiers d'aide HLP. J'ai dû récupérer "winhlp32.exe" de Win XP pour faire "tourner" l'aide .
    Pas trouver de solution pour faire fonctionner F1.

  11. #11
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    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 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Bonjour,

    pour faire fonctionner l'aide Hlp avec F1 sous D7 et W10 regarde ici

    La manip est à refaire à chaque grosse mise à jour de Windows.

    Sinon F1 fonctionne sur D10.3 Community, mais moins bien je trouve (parfois il n'aboutit pas alors que sous D7 on a toujours la bonne info avec propriétés, méthodes et exemples) .

    c'est quand même dommage de ne pas tester cette nouvelle version (l'amateur que je suis pratique les 2)

    A+
    Charly

  12. #12
    Membre actif
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Points : 224
    Points
    224
    Par défaut
    merci pour le lien

    je vais tenter.

    Pour le moment une seule version me suffit largement. Je verrai quand je maitriserai (c'est pas pour la semaine prochaine !)

    A+

  13. #13
    Membre confirmé Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Points : 477
    Points
    477
    Par défaut
    Citation Envoyé par pprem Voir le message
    bonjour

    petite astuce pour ne pas te prendre le choux : mets des begin end avant d'écrire le code à l'intérieur, comme ça t'es certain de ne rien oublier

    si tu es sur une version récente il est même probable que l'EDI t'ajoute le END tout seul

    et pareil, sur les versions récentes tu peux utiliser Ctrl+D qui réinvente le source sur lequel tu travailles, ça permet de visualiser ce genre d'oublis (mais pas de Ctrl+Z possible, donc faut s'adapter).
    Tout pareil, je rajouterais que je fais la même chose avec les parenthèses, les quotes …

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

Discussions similaires

  1. Problème avec plusieurs if then else imbriqués
    Par Beauserge dans le forum Langage
    Réponses: 13
    Dernier message: 16/05/2017, 19h36
  2. Syntaxe If Then Else dans un état
    Par psykopat67 dans le forum Access
    Réponses: 5
    Dernier message: 24/06/2015, 22h04
  3. If Then Else
    Par Piout dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 24/02/2005, 16h09
  4. IF THEN ELSE imbriqués
    Par nuke_y dans le forum Oracle
    Réponses: 2
    Dernier message: 15/11/2004, 14h57
  5. [CR 7] [débutante] pb avec if then else
    Par xs_nady dans le forum Formules
    Réponses: 8
    Dernier message: 28/05/2004, 15h36

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