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

EDI Delphi Discussion :

Directive de compilation ne fonctionnant pas


Sujet :

EDI Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 72
    Points : 74
    Points
    74
    Par défaut Directive de compilation ne fonctionnant pas
    Pourquoi c'est la ligne Sleep(3) dans cet exemple qui se compile et pas la ligne du Sleep(2) ? Cela me le fait partout et je ne peux exploiter ces directives du coup pour mes projets.

    Je précise que je fais un tout reconstruire à chaque fois pour tenir compte des changements de directive, mais rien n'y fait.







    Ce phénomène était déjà la dans D7, et se maintient dans Turbo... donc je suppose que ce n'est pas un bug, par contre je ne vois pas la différence conceptuelle entre ce que je tape et ce qui est indiqué dans l'aide (ci joint pour référence)...


  2. #2
    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
    Voila ce que j'ai dans l'aide de mon DELPHI 7
    La directive $IFEND termine $IF et $ELSEIF. Cela permet de cacher les blocs $IF/$IFEND aux compilateurs les plus anciens à l'intérieur d'un bloc $IFDEF/$ENDIF, puisque les compilateurs les plus anciens ne reconnaissent $IFEND comme une directive. $IF se termine uniquement par $IFEND. Les directives $IFDEF, $IFNDEF, $IFOPT se terminent uniquement par $ENDIF.

    Remarque*: Lorsque vous cachez $IF dans $IFDEF/$ENDIF, n'utilisez pas $ELSE avec le $IF. Les compilateurs des versions précédentes interpréteront le $ELSE comme faisant partie du $IFDEF, ce qui produira une erreur de compilation. Vous pouvez utiliser un {$ELSEIF True} comme substitut de {$ELSE} dans cette situation, puisque le $ELSEIF ne sera pas pris si le $IF est pris d'abord, et puisque les anciens compilateurs n'interpréteront pas le $ELSEIF. Cacher $IF pour assurer la compatibilité ascendante est surtout nécessaire aux fournisseurs tiers et aux développeurs d'applications dont le code doit fonctionner sur beaucoup de versions des produits Delphi et Kylix.

    Une sulution possible qui évite la clause ELSE
    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
    {$IFNDEF MACHIN}
    {$IFNDEF TRUC}
    {$DEFINE BIDULE}
    {$ENDIF}
    {$ENDIF}
     
    .....
     
    {$IFDEF MACHIN}
    Form1.caption := 'MACHIN' ;
    {$ENDIF}
    {$IFDEF TRUC}
    Form1.caption := 'TRUC' ;
    {$ENDIF}
    {$IFDEF BIDULE}
    Form1.caption := 'BIDULE' ;
    {$ENDIF}

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 72
    Points : 74
    Points
    74
    Par défaut
    Et beh, c'est assez tordu tout cela, on dirait de l'aide pour geek

    Ceci dit ca m'a donné idée de fureter coté $IF que je n'utilisais pas et j'ai trouvé une structure linéaire qui me va, sans imbriquer les directives. Ca donne cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    const _Module = 'NCP';
     
    ...
     
      {$IF _Module = 'BOA'}
        Sleep(1);
      {$ELSEIF _Module = 'ACW'}
        Sleep(2);
      {$ELSEIF _Module = 'NCP'}
        Sleep(3);
      {$IFEND}

    Désolé, là j'ai beau aimer Delphi et Borland, mais mauvais point pour eux, c'est assez lourd leur façon de faire (opinion personnelle mais que je partage avec moi même bien sur...)

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

Discussions similaires

  1. Styles CSS directement dans HTML ne fonctionne pas
    Par NiamorH dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 29/09/2010, 20h41
  2. Réponses: 1
    Dernier message: 10/12/2009, 22h26
  3. Application compilée ne fonctionne pas sur un autre poste
    Par wajdisoft dans le forum Installation, Déploiement et Sécurité
    Réponses: 14
    Dernier message: 28/08/2009, 17h15
  4. Réponses: 3
    Dernier message: 14/04/2009, 11h29
  5. Réponses: 4
    Dernier message: 13/10/2007, 15h18

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