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 :

D�claration d'une structure initialis�e avec pointeur sur composant


Sujet :

C++Builder

  1. #1
    Membre habitu�
    Homme Profil pro
    Ing�nieur validation
    Inscrit en
    Juillet 2013
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Par d�faut D�claration d'une structure initialis�e avec pointeur sur composant
    Bonjour,

    Je souhaite d�clarer un tableau de structure en global et pr�-initialis�. Ce tableau me permettra de standardiser pas mal de mes fonctions.

    Le hic c'est que dans les variables d'initialisation il y a des pointeurs sur des composants des Forms (TLabel). Builder cr�� en premier ce tableau avant m�me la cr�ation des Forms elles-m�mes et par cons�quent crash d�s le lancement.

    Voil� un exemple de mon tableau:
    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
     
    typedef struct
    {
    	int VariableAddress;
    	AnsiString VariableName;
    	bool Read;
    	bool Write;
    	TLabel* VariableLabel;
    	AnsiString VariableText;
    	AnsiString VariableType;
    }TFormatTable;
     
    const TFormatTable Table [] = {
      {175, "Var1", false, false,Form1->Label1,"","Type1"},
      {177, "Var2", false, false,Form1->Label2,"","Type1"}
      };
    Est ce que quelqu'un sait comment faire pour d�clarer un tableau initialis� avec des pointeurs (sans les rajout� � la main par la suite).

    Merci de votre aide.

  2. #2
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par d�faut
    Comment veux tu faire une const sur un pointeur Form1 et un sous pointeur Label1 en compilation alors qu'ils ne seront connus qu'en RunTime ?

    Ce que tu veux faire est impossible sans fournir le pointeur dans un second temps !
    Ajoute les �l�ments dans le constructeur de TForm1

    Je pense qu'il te faudrait avoir une approche plus OO, tu sembles vouloir faire une uzinagaz qui ne profite pas des astuces de la VCL
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre habitu�
    Homme Profil pro
    Ing�nieur validation
    Inscrit en
    Juillet 2013
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Par d�faut
    Salut ShaiLeTroll,

    Merci de ta r�ponse.
    C'est ce qui a �t� fait et effectivement �a marche:
    - Table d�clar� en non constant
    - Pointeur sur les Label ajout� par la suite

    Aurais-tu une autre solution � me proposer que celle-ci?

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 412
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par d�faut
    Salut !

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class jStruct : public TComponent
    {
    public :
    TLabel *Label;
    // autres propriétés de cette classe...
     
        __fastcall jStruct(TForm *AOwner, AnsiString N, TRect *R);
        __fastcall ~jStruct();
        // autres méthodes de cette classe ...
    };

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    __fastcall jStruct::jStruct(TForm *AOwner, AnsiString N, TRect *R)
        : TComponent(AOwner) // l'objet jStruct a pour propriétaire AOwner
    {
    // l'objet jStruct est propriétaire du label
    Label = new TLabel(this);
    // mais le label saura se dessiner sur l'AOwner du type TForm
    Label->Parent = AOwner;
    Label->SetBounds(R->Left, R->Top, R->Right, R->Bottom);
    Label->Caption = N;
    }
     
    __fastcall jStruct::~jStruct()
    {
    }
    Usage :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    jStruct *StructA;
    jStruct *StructB;
    //-----------------
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
    TRect R = Rect(10,10,80,21);
    StructA = new jStruct(this, "Label A", &R);
    R.Top = R.Top + 30;
    StructB = new jStruct(this, "Label B", &R);
    }
    //-----------------
    REM : ce qui d�rive de TComponent se d�truit automatiquement avec son propri�taire.

    A plus !

Discussions similaires

  1. R�ponses: 4
    Dernier message: 28/03/2014, 09h56
  2. R�ponses: 7
    Dernier message: 11/03/2013, 10h15
  3. R�ponses: 6
    Dernier message: 31/03/2011, 08h55
  4. R�ponses: 4
    Dernier message: 08/02/2005, 20h47
  5. fuite de memoire dans une liste de pointeur sur composant
    Par Nicolos_A dans le forum Composants VCL
    R�ponses: 2
    Dernier message: 16/12/2004, 08h46

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