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 :

Portée de la directive $DEFINE insuffisante


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut Portée de la directive $DEFINE insuffisante
    bonjour bonjour

    j ai un module qui declare mes constantes, et je voulais utiliser {$DEFINE CONSTANTS} pour flagger le fait que mes constantes sont definies

    mais si je mets dans un autre module {$IFDEF CONSTANTS} ca passe pas.
    Effectivement la portee du DEFINE a l air de rester dans le module ou il est defini.

    Est-ce qu'il y a une autre solution pour la compilation conditionnelle entre plusieurs modules ?


    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    unit constants;
    {$DEFINE CONSTANTS}
    interface
    const
      c1 =
      c2=
    implementation
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    unit unit1;
    interface
     
      var MaVar;
     
    implementation
     
    {$IFNDEF CONSTANTS}
      const c1=
    {$ENDIF}
     
    initialization
      mavar := c1;
    end;

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Par habitude je les place dans le .dpr et/ou les options du projet.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    oui mais ca pert son interet pour savoir si un module particulier a ete declare.

    il s agit en fait d unites qui sont utilisees dqns plusieurs projets differents

    pour faire l analogie avec le c++ qui m est cher, en c++ on met un #define au debut de chaque .h pour dire "je suis defini, mes declarations sont dispo"

    en fait j ai utilise
    {$IF declared(MaConst)}
    et ca marche impec.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut La suite
    j ai essaye de declarer dans le dpr (je suis curieux quand meme)

    donc, les DEFINE qui sont declares dans le dpr sont cences etre accessibles dans ttes les unites du projet ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    roooooooo

    j ai mis des define dans le dpr et ca marche pas.

    Avant, j avais mis DEBUG dans les options du projet, et des {$IFDEF DEBUG} un peu partout dans mon prog.
    La, j ai mis {$DEFINE DEBUG} dans le dpr, et le resultat n est pas le meme..

    desole d etre un peu lourd, mais la doc ne s etend pas bcp sur le sujet..

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par copeau31
    desole d etre un peu lourd,
    ça vas tu as de la marge
    Effectivement je me suis trompé c'est et et non et/ou. Le fait de déclarer une directive dans les options la rend globale à toutes les unités d'un projet. Si je les déclares dans le dpr c'est juste pour m'en souvenir.

    Sinon tu peux utiliser la directive {$i NomDeFichierASCII} dans chacune de tes déclarations d'unités.
    Ce fichier unique centralisant les déclarations de $define Debug, $define constants, etc
    Avec cette approche, liée à la compilation en ligne de commande/batch, tu arriveras à tes fins, je pense.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    oui j avoue j ai pense a un include avec tous les define dedans

    j ai craque en cours de route quand j ai commence a vouloir le coller partout (bcp d unites) . donc je me suis rabattu sur les projet/options

    enfin... (borland si tu nous ecoutes) c super pas pratique pour activer/desactiver certains defines rapidement... moi tres faignant, pas vouloir cliquer beaucoup.

    merci a toi, Laurent.
    ++

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

Discussions similaires

  1. [Dojo] Documentation directive define
    Par Caplande dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 06/01/2012, 18h24
  2. Réponses: 3
    Dernier message: 10/01/2010, 16h33
  3. Portée des constantes déclarées avec define
    Par Anduriel dans le forum Langage
    Réponses: 1
    Dernier message: 10/04/2006, 23h03
  4. Réponses: 1
    Dernier message: 29/11/2005, 11h10
  5. portée de #define
    Par Azharis dans le forum C++
    Réponses: 9
    Dernier message: 04/05/2005, 20h16

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