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 :

Erreur lors de création dynamique de TEdit


Sujet :

C++Builder

  1. #1
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut Erreur lors de création dynamique de TEdit
    Bonjour,
    Dans un GroupBox, j'ai créé un ensemble de Edit dynamiquement (voir les codes). Quand NmbrHarmo = 3; tout fonctionne, mais quand NmbrHarmo > 4; le programme se plante.
    Merci par avance

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    // Déclaration
      int   NmbrHarmo = 3;
      TEdit	**SourceMagni, **SourceAngle;
     
    //---------------------------------------------------------------------------
    __fastcall TValuesCapture1F::TValuesCapture1F(TComponent* Owner)
    		: TForm(Owner)
    {
     
      //--------------------------------------------------------------
      //  Test: 
      //--------------------------------------------------------------
     
      SourceMagni    = new TEdit*;
      for (int i=0; i<NmbrHarmo; i++)
    		SourceMagni[i]    = new TEdit(ValuesCapture1F);
      for (int i=0; i<NmbrHarmo; i++)
      {
    		SourceMagni[i]->Parent  = GroupBox54;
    		SourceMagni[i]->Visible = true;
    		SourceMagni[i]->Top     = 20 + i*30;
    		SourceMagni[i]->Left    = 10;
    		SourceMagni[i]->Width   = 70;
    		SourceMagni[i]->Height  = 20;
    		SourceMagni[i]->Text    = IntToStr(i);
      }
     
     
      SourceAngle    = new TEdit*;
      for (int i=0; i<NmbrHarmo; i++)
    		SourceAngle[i]    = new TEdit(ValuesCapture1F);
      for (int i=0; i<NmbrHarmo; i++)
      {
    		SourceAngle[i]->Parent  = GroupBox54;
    		SourceAngle[i]->Visible = true;
    		SourceAngle[i]->Top     = 20 + i*30;
    		SourceAngle[i]->Left    = 100;
    		SourceAngle[i]->Width   = 70;
    		SourceAngle[i]->Height  = 20;
    		SourceAngle[i]->Text    = IntToStr(i);
      }
     
     
    }

  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
    Salut,
    pourrait tu nous donner le message d'erreur et éventuellement la ligne sur laquelle l'appli s'arrête lors de l'erreur


  3. #3
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Merci pour la reformulation du titre, beaucoup plus claire!

    Erreur quand NmbrHarmo = 5:
    Violation d'accès à l'adresse 0067EA69, écriture dans l'adresse 005B8EF0

    J'ai l'impression que cette création a pris des mémoires déja réservés par le programme. Est-ce que mes codes sont corrects pour créer plusieurs Edits?
    Merci

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 70
    Points : 69
    Points
    69
    Par défaut
    Bonjour,

    J'ai testé ce code, il fonctionne chez moi :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    // Déclaration
      int   NmbrHarmo = 5;
      TEdit	**SourceMagni, **SourceAngle;
     
    //---------------------------------------------------------------------------
    __fastcall TValuesCapture1F::TValuesCapture1F(TComponent* Owner)
    		: TForm(Owner)
    {
     
      //--------------------------------------------------------------
      //  Test: 
      //--------------------------------------------------------------
     
      SourceMagni    = new TEdit*;
     
      for (int i=0; i<NmbrHarmo; i++)
      {
    		SourceMagni[i]    = new TEdit(ValuesCapture1F);
                    SourceMagni[i]->Parent  = GroupBox54;
    		SourceMagni[i]->Visible = true;
    		SourceMagni[i]->Top     = 20 + i*30;
    		SourceMagni[i]->Left    = 10;
    		SourceMagni[i]->Width   = 70;
    		SourceMagni[i]->Height  = 20;
    		SourceMagni[i]->Text    = IntToStr(i);
      }
     
     
      SourceAngle    = new TEdit*;
     
      for (int i=0; i<NmbrHarmo; i++)
      {
    		SourceAngle[i]    = new TEdit(ValuesCapture1F);
                    SourceAngle[i]->Parent  = GroupBox54;
    		SourceAngle[i]->Visible = true;
    		SourceAngle[i]->Top     = 20 + i*30;
    		SourceAngle[i]->Left    = 100;
    		SourceAngle[i]->Width   = 70;
    		SourceAngle[i]->Height  = 20;
    		SourceAngle[i]->Text    = IntToStr(i);
      }
     
     
    }
    Cordialement.

  5. #5
    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
    L'erreur se produit donc, à priori, sur un new.
    Pour moi l'erreur vient de tes allocation de TEdit*, il lui manque une taille car tu va lui mettre plusieurs TEdit * alors que la tu alloue pour un seul TEdit*.
    Je te conseille de faire un tour dans la FAQ C++ sur cette question : http://cpp.developpez.com/faq/cpp/?p...EURS_new_array

  6. #6
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Merci
    Tu as tout à fait raison. J'ai donné la taille dans la première couche de new, et tout marche


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      SourceMagni    = new TEdit*[NmbrHarmo];
     
      SourceAngle    = new TEdit*[NmbrHarmo];

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

Discussions similaires

  1. Erreur lors de création de table dans une BD SQL Server
    Par Klemsy78 dans le forum Administration
    Réponses: 1
    Dernier message: 18/08/2009, 20h32
  2. Réponses: 7
    Dernier message: 31/07/2009, 11h53
  3. Erreur lors de création de class
    Par yLaplace dans le forum C++
    Réponses: 5
    Dernier message: 15/02/2008, 11h39
  4. erreur lors de création de miniature !
    Par Byakuya dans le forum Langage
    Réponses: 5
    Dernier message: 28/05/2007, 17h31
  5. Erreur lors de création d'un MDE
    Par delcroixf dans le forum Access
    Réponses: 1
    Dernier message: 11/02/2007, 07h45

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