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 :

Creation dynamique d'un tableau de TShape


Sujet :

C++Builder

  1. #1
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut Creation dynamique d'un tableau de TShape
    Bonjour,

    J'aimerai créer dynamiquement un tableau de TShape mais je n'y arrive pas

    Je fais ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int N=100;
    TShape **MyShape;
    MyShape = new *TShape[N];
    Mais ca ne compile pas. Comment puis-je faire

    Merci d'avance

  2. #2
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    essaye plutot comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int i ;
    TShape * MyShape[100] ;
    for(i=0;i<100;i++){
    MyShape[i] = new TShape ;
    }

  3. #3
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Merci de ton aide
    Mais en quoi c'est dynamique!
    Ici c'est "100" et ca ne peut evoluer que en recompilant si je me trompe pas

  4. #4
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    c'est dynamique parce que c'est des pointeur et que tu les allous lorsque tu en as besoins et les delete lorsque tu en a plus besoin, pas comme des objets qui sont créé au lancement du programme et supprimé à l'arret du programme, sinon tu dois pouvoir fair comme ceci mais je suis plus sur du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int i = 100 ;
    TShape * MyShape ;
    MyShape = new TShape[i] ;

  5. #5
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 390
    Points : 1 777
    Points
    1 777
    Par défaut
    Salut !

    Si la question porte sur un nombre inconnu de Shapes, tu peux éventuellement utiliser une TList :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TList *Shapes = new TList;
    L'ajout d'un TShape :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shapes->Add(new TShape(this));
    L'accès à un élement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (TShape*) shape = (TShape*)Shapes->Items[n];
    Ne pas oublier de détruire la liste.
    Comme les shapes ont un propriétaire qui se charge de les détruire, le code tient en deux lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Shapes->Clear();
    delete Shapes;
    A plus !

  6. #6
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Hé Les gas, vous les essayer vos suggestions!!!!
    - [POTTIER] Comme je l'ai deja dis, La premiere ne permet pas de faire varier dynamqiuement le 100
    - [POTTIER] LA second solution le serait effectivement si le constructeur de TShape ne demandait pas un argument -> donc ca compile pas!
    - [ ENDERSUN] Et la derniere ne compile pas non plus variable "shape" inconnu

    Merci tout de meme de votre aide, mais je suis sure qu'il y a une solution

  7. #7
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,
    Je me permet de penser que les solutions données par les respectables sirs pottiez et henderson contenaient suffisamment de matière pour résoudre ton problème.
    Pour essayer de t'aider, je te proposes :
    dans le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            TShape *pShapes[];
            void __fastcall CreerShapes(int nbShapes);
    dans le .cpp
    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
     
    void __fastcall TForm1::CreerShapes(int nbShapes)
    {
    for (int i  = 0; i < nbShapes; i ++)
    {
            pShapes[nbShapes] = new TShape(this);
            pShapes[nbShapes]->Parent = this;
            pShapes[nbShapes]->Name = AnsiString("testshape") + i;
            pShapes[nbShapes]->ShowHint = true;
            pShapes[nbShapes]->Hint = pShapes[nbShapes]->Name;
            //etc, etc, etc....
    }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::BTcreerShapesClick(TObject *Sender)
    {
    CreerShapes(10);
    }
    En espérant t'aider,
    @ +

    //EDIT :
    Et le coup de la TList, pour moi, est très bien...
    //EDIT 2 :
    Bon et pis, si c'est pas ça alors les Shapes m'échappent...!

  8. #8
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Citation Envoyé par uriotcea
    Hé Les gas, vous les essayer vos suggestions!!!!
    Citation Envoyé par pottiez
    je suis plus sur du code
    Ca veut bien dire que je n'avais pas de quoi testé ma solution a ce moment la

    Sinon pour la solution de Henderson il suffit de mettre devant la ligne en default

Discussions similaires

  1. creation dynamique de id d'un tableau
    Par hermannd dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/01/2007, 16h17
  2. [Tableaux] Création dynamique de tableau type array()
    Par Pahcixam dans le forum Langage
    Réponses: 7
    Dernier message: 29/11/2006, 14h34
  3. Réponses: 8
    Dernier message: 04/09/2003, 16h07
  4. Creation dynamique d'un objet
    Par Tom_sawyer13 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 06/08/2003, 18h31
  5. [VBA-E] Dim dynamique sur un tableau
    Par Vince69 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/12/2002, 13h32

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