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 d'EAccessViolation avec un String *


Sujet :

C++Builder

  1. #1
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut Erreur d'EAccessViolation avec un String *
    Bonjour,

    Dans le but de récupérer des valeurs d'un champ d'une base de données, j'ai entrepris de récupérer les 3 lignes d'un champ et de les stocker dans un tableau de String.

    Donc ^pour faire rapide, dans mon constructeur j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    nomEnfant = new String();
    prenomEnfant = new String();
    anneeNaissance = new String();
    Donc chaque string correspond à un champ d'une table.

    Lorsque je récupère mes infos de ma table, qui ne sont que des caractères (en mode pas à pas je visualise bien les valeurs retournées par ma requete SELECT), et que je veux les attribuer à chaque "tableau", j'ai un message d'erreur qui apparait pendant ma boucle.

    voici le code de ma boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(i=0;i<NbreRecord;i++)
    {
       nomEnfant[i] = ObjGestionQuery->GetResultRequete("NomEnfant");
       prenomEnfant[i] = ObjGestionQuery->GetResultRequete("PrenomEnfant");
       anneeNaissance[i] = ObjGestionQuery->GetResultRequete("AnneeNaissance");
     
     
       ObjGestionQuery->GetObjDataModule().Query->Next();
    }
    Donc j'ai en amont une requete SELECT qui récupère tous les champs en fonction d'une clé.
    Ici c'est une liste d'enfant pour une famille. La clé étant la reference famille.

    Donc si j'ai 3 enfants, j'aurai NbreRecord = 3.

    Donc pour chaque enfant, je récupère son prénom, son nom et sa date de naissance. Que je stocke dans les String*.
    A la première boucle, je stocke bien dans l'indice [0], mais à la seconde, la boucle plante au prenomEnfant[i] =... alors que nomEnfant[i] recoit bien une valeur de type String.

    Qu'en pensez vous?

    merci d'avance

  2. #2
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Utilise l'objet TStringList, il est justement fais pour stocker un ensemble de chaîne:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TStringList *nomEnfant = new TStringList ();
    TStringList *prenomEnfant = new TStringList ();
    TStringList *anneeNaissance = new TStringList ();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(i=0;i<NbreRecord;i++)
    {
       nomEnfant->Add( ObjGestionQuery->GetResultRequete("NomEnfant"));
       prenomEnfant->Add( ObjGestionQuery->GetResultRequete("PrenomEnfant"));
       anneeNaissance->Add( ObjGestionQuery->GetResultRequete("AnneeNaissance"));
     
     
       ObjGestionQuery->GetObjDataModule().Query->Next();
    }

    Pour récupérer les élement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nomEnfant->Strings[i]
    Et ne pas oublier de détruire les objets créée lorsque ceux ci ne sont plus utilisé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    delete nomEnfant ;
    delete prenomEnfant ;
    delete anneeNaissance ;

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    Trop simple....

    J'avais complètement zappé l'utilisation des STringList, d'autant que je les avait déja utilisées dans la suite de mon soft....

    merci !

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

Discussions similaires

  1. Erreur de compilation avec les string et char*
    Par number9 dans le forum C++
    Réponses: 3
    Dernier message: 30/04/2012, 09h58
  2. Réponses: 4
    Dernier message: 07/05/2009, 15h54
  3. Erreur de compilation avec Ada.Strings.Unbounded
    Par semaj_james dans le forum Ada
    Réponses: 7
    Dernier message: 20/04/2007, 16h28
  4. Erreur de compilation sur std::string avec Dev C++
    Par dada57 dans le forum Dev-C++
    Réponses: 4
    Dernier message: 20/03/2006, 18h06
  5. Erreur EACCESSVIOLATION avec des compsts créés dynamiquement
    Par tsikpemoise dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/02/2004, 19h05

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