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

C++Builder Discussion :

Initialiser une constante en dynamique


Sujet :

C++Builder

  1. #1
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut Initialiser une constante en dynamique
    Bonjour,

    je voudrais initialiser des constantes avec la hauteur et la largeur d'un BITMAP. Le problème est que les dimensions de ce BITMAP ne sont pas connues lors de la compilation du programme.
    En clair, lorsque le programme est exécuté, il charge le BITMAP, puis intialise ces variables constantes.
    L'intérêt de variables constantes est qu'elles ne peuvent pas être modifiées accidentellement.

    J'ai regardé du coté de la FAQ sur les variables statiques et je me demande si la solution ne serait pas là. Mais j'ai du mal à comprendre les exemples donnés.

    Quelqu'un pourrait-il m'éclairé sur ce problème ?

    Merci & @ +

  2. #2
    Membre averti
    Avatar de Altau
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    296
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 296
    Points : 360
    Points
    360
    Par défaut
    Citation Envoyé par rtg57
    je voudrais initialiser des constantes avec la hauteur et la largeur d'un BITMAP. Le problème est que les dimensions de ce BITMAP ne sont pas connues lors de la compilation du programme.
    Donc, ce ne sont pas des constantes !
    Il s'agit de variables qu'il te suffit de déclarer comme globales (ou statiques si elles sont utilisées dans une seule fonction). A moins que tu ne te crées dans ton fichier hpp des objets ad hoc.

  3. #3
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Excuse-moi Altau,

    je ne comprends pas grand chose à ta réponse, et cela ne résoud pas mon problème.

    Peut être la question était-elle mal tournée:
    je voudrais créer des variables que l'on initialise 1 fois par le programme, dynamiquement. Je voudrais qu'elles ne puissent pas être modifiées après cette initialisation.

    Est-ce que ceci est possible en C++ ?

    @+

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Hélas, on ne peut initialiser une variable que lors de sa déclaration.

    Mais tu peux toujours faire une classe avec des membres constants, initialisés lors de la création de l'objet...

  5. #5
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    C'est une idée ça !

    Sans parler de classe, est-ce que des 'variables' déclarées sur le tas, avec l'opérateur new ne feraient pas l'affaire ?

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    non, sauf pet-être avec une classe/structure comprenant un unique membre constant...
    naturellement, ça n'empêchera pas de réassigner le pointeur pour le faire pointer vers une autre valeur/structure, mais ça empêchera de changer directement la valeur dans la structure...

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Les variables globales sont à éviter à tout prix....c'est source de suicide lorsque ça bug

    Moi j'utiliserais une classe comme cela (le type est a adapter à tes besoins, ou alors utiliser un (Variant) :

    Le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class DynaConst
    {
       private:
         AnsiString data;
       public:
          DynaConst( AnsiString value );
          AnsiString __fastcall getValue( void );
    }
    Le .cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    DynaConst::DynaConst( AnsiString value )
    {
       data = value;
    }
     
    AnsiString __fastcall DynaConst::getValue( void )
    {
       return data;
    }

  8. #8
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Merci pour cet aide.
    Je constate simplement que c'est compliqué pour un besoin tout simple.
    Mais bon, aucun langage n'est parfait...

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Tu ne trouveras cela dans aucun langage, en tout cas pas à ma connaissance.
    Ce n'est vraiment pas compliqué et au final c'est toujours pareil...c'est à toi de programmer ce que tu veux que ton programmes fasse ;-)

    Passer par une classe telle que celle dont je t'ai donné le code te permet de t'assurer que même par erreur cela ne peux pas arriver.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 24/11/2011, 10h41
  2. Réponses: 4
    Dernier message: 15/09/2010, 20h21
  3. initialisation d'une constante dans le constructeur ?
    Par Lorenzo77 dans le forum ActionScript 3
    Réponses: 4
    Dernier message: 06/08/2009, 10h10
  4. Réponses: 2
    Dernier message: 30/01/2007, 18h04
  5. Fixer une constante dans une fonction générée dynamiquement ?
    Par XecTech dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/08/2006, 20h59

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