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 :

access violation at 0x32825c2e:read of adress 0x0000008


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 71
    Par défaut access violation at 0x32825c2e:read of adress 0x0000008
    Bonjour,
    je suis entrain de developper une petite application de gestion ndu personnel sous c++ builder 2007
    à chaque ajout de code j'execute pour voir s'il y a des erreurs
    en ajoutant un code à un boutton et en executant le message d'erreur suivant sa'affiche :

    Echec du projet c/:RadStudio/GestionPersonnel.exe avec le message :'access violation at 0x32825c2e:read of adress 0x00000008' . Processus stoppé.Utilisez pas à pas ou executer pour continuer.

    jai executé pas à pas: j'obtiens la meme erreur et le meme message.
    à quoi ceci est il du?
    que dois je faire?

    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
    Tu essai probablement d'accéder à un objet qui est pas alloué ou dont la référence est incorrecte.

    Mais si tu ne poste pas le bout de code qui pose problème, on va avoir du mal a t'aider!

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 71
    Par défaut
    il s'agit ici de preciser le nombre des mutations qui n'ont pas étées mises à jours depuis 7 jours ou plus.
    ensuite mettre la liste des matricules des mutations dans un combobox dans une autre forme (frmmrl)
    voici le code du bouton:
    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
    void __fastcall Tacc::BtmrlClick(TObject *Sender)
    {
    TDate date1;
    TDate date2;
    date1=Date();
    int i=0,j;
    int nbrJrs;
    int * t;
    t[0]=0;
    ADOConnection1->Open();
    ADOQuery1->SQL->Add("select Matricule,D_LastUpdate from Mutations");
    ADOQuery1->Open();
    ADOQuery1->First();
    do {
    	date2=ADOQuery1->FieldByName("D_LastUpdate")->AsDateTime;
    	nbrJrs=DaysBetween(date1,date2);
    		if (nbrJrs>=7) {
    			i++;
    			t[i]=ADOQuery1->FieldByName("Matricle")->AsInteger;}
    	ADOQuery1->Next();
    }while (!ADOQuery1->Eof);
    if (i==0) {int rep1= MessageBox(Handle,"Vous n'avez pas de mutations à relancer", "Avertissement",MB_OK|MB_ICONSTOP );
    		if (rep1==IDOK){
    			acc->Show();
    			}
     
    }
    else { for (j = 1; j <= i; j++) {
    	frmmrl->ComboBox1->Items->Add(t[j]);
    	   }
    	frmmrl->Show();
     
    }
     
     
    }
    j'ai essayé d'initialiser le pointeur t avec NULL mais ça donne le meme type d'erreur !

  4. #4
    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
    L'exception est normal:
    tu déclare un pointeur (t), mais tu n'alloue pas d'espace mémoire. Donc forcément quand tu essai d'accéder à t[x], tu as une exception déclenchée!

    Plusieurs remarques :
    - Utilise plutôt une boucle while (à la place d'une do...while)
    - Pourquoi passer par ta variable t (qui me semble inutile), et ne pas faire directement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [...]
       if (nbrJrs>=7) 
       {
          i++;
          frmmrl->ComboBox1->Items->Add( ADOQuery1->FieldByName("Matricle")->AsString ) ;
       }
    [...]

  5. #5
    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
    Voici une proposition de code qui devrait fonctionner, a tester:
    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
      TDate date1 = Date();
      TDate date2;
      int i=0;
      ADOConnection1->Open();
      ADOQuery1->SQL->Add("select Matricule,D_LastUpdate from Mutations");
      ADOQuery1->Open();
      ADOQuery1->First();
      while( !ADOQuery1->Eof )
      {
         date2=ADOQuery1->FieldByName("D_LastUpdate")->AsDateTime;
         if( DaysBetween(date1, date2) >= 7 )
         {
           i++;
           AnsiString mat = ADOQuery1->FieldByName("Matricle")->AsString;
           frmmrl->ComboBox1->Items->Add( mat );
         }
         ADOQuery1->Next();
      }
      if (i==0)
      {
        MessageBox(Handle,"Vous n'avez pas de mutations à relancer", "Avertissement",MB_OK|MB_ICONSTOP ) ;
        acc->Show();
      }
      else
        frmmrl->Show();
    - J'ai supprimer quelques variables et tests qui me semblaient inutiles, à toi de les remettre si tu en as besoin.

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 71
    Par défaut
    Merci infiniment,
    je me suis servi d'un tableau à 100 élément en esperant que le nombre de mutations n'atteindra jmais ce chiffre. Mais il s'avere que ce n'est guerre pertinent!

    Par contre ton code marche tres bien et sans erreur.

    Au passage, par quel moyen alloue t on de l'espace mémoire?
    Mille merci encore.

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

Discussions similaires

  1. Access violation at adress in module 'toad.exe'
    Par haykelFST dans le forum Toad
    Réponses: 1
    Dernier message: 19/09/2012, 09h26
  2. "access violation reading location"
    Par Vanito dans le forum C
    Réponses: 7
    Dernier message: 30/06/2011, 19h49
  3. Access violation reading
    Par rXpCH dans le forum C++
    Réponses: 6
    Dernier message: 22/06/2011, 12h07
  4. access violation at adress 0057744.read of address 000000
    Par zanoubya dans le forum Débuter
    Réponses: 2
    Dernier message: 21/06/2010, 17h34
  5. [débutant]Access violation reading location
    Par gate35 dans le forum C++
    Réponses: 6
    Dernier message: 13/05/2009, 14h32

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