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

Langage Delphi Discussion :

EAccess violation a la fermeture de l'application


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 119
    Par défaut EAccess violation a la fermeture de l'application
    Bonjour à tous,
    je demande votre aide car je ne parviens pas à régler un problème.
    Lors de la fermeture de mon programme (un jeu d'anagramme), je recois l'erreur suivante :

    Exception EaccessViolation dans le module projet1.exe dans 00000000
    Violation d'accès à l'adresse 00000000. Lecture de l'adresse 00000000.


    J'utilise des pointeurs dans mon code, j'ai déja essayé de mettre des dispose() etc mais rien n'y fait.

    Que représentent les adresses mémoires ci-dessus ?

    Merci pour votre aide.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    Ces adresses ne représentent rien en particulier. Pour essayer de résoudre ce problème il faut que vous regardiez les destructeurs de vos différents objets pour voir si vous ne tenteriez pas de détruire un objet déjà détruit.

    Par ailleurs vous avez mentionné l'utilisation de pointeurs (avec des records j'imagine), ce n'est pas très aisé de résoudre ce genre de problème comme ça sans infos, peut-être serait-il bon de poster quelques extraits de code pertinents pour que l'on puisse regarder.

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 119
    Par défaut
    Bonjour, merci de votre réponse.
    Je poste ci-dessous un extrait de code.
    C'est après l'execution de cette procédure et ensuite la fermeture du programme que l'erreur se produit. Elle n'apparati pas pendant l'execution de la procedure.

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    procedure placeMots(motTrie,vraiMot:string;indice:integer;tab:Ttab);
     
      var i,cour,nv,nvMot:Pliste;
     
     
    begin
    //Creation de la cellule contenant le mot trié.
    nv:=new(PListe);
    nv^.mot:=motTrie;
    nv^.trieSvt:=NIL;
    nv^.MotSvt:=NIL;
    nv^.first:=true;
     
    //Creation de la cellule contenant le mot non trié.
    nvMot:=new(PListe);
    nvMot^.mot:=vraiMot;
    nvMot^.motSvt:=NIL;
     
     
       i:=tab[indice];
       cour:=tab[indice];
        while (i.mot<>MotTrie) and (i^.trieSvt <> NIL) do
          begin
            cour:=i^.trieSvt;
            i:=cour;
          end;
     
        if i.mot=MotTrie then  //mot trié déja présent
          begin
            if cour^.MotSvt = Nil then  cour^.MotSvt:=nvMot //premier "VraiMot" à insérer.
            else  //Nième "VraiMot" à insérer.
              begin
                while i^.MotSvt <> NIL do
                  begin
                    cour:=i^.MotSvt;
                    i:=cour;
                  end;
               end;
     
            cour^.motSvt:=nvMot;
     
          end
     
         else
          begin
            cour^.trieSvt:=nv;
            i:=cour^.trieSvt;
            i.motSvt:=nvMot;
            tab[indice]^.mot := IntToStr(StrToInt(tab[indice]^.mot)+1)
          end;
     
    //end;//
     
    end;
    Au niveau des destructeurs, je n'en utilise aucun.
    Merci

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    Serait-il possible d'avoir également la déclaration des différents types utilisés ici ?

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 119
    Par défaut
    Bien sur voici la clause type :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Type
      PListe = ^Liste;
      Ttab = array [0..27000] of PListe;
     
      Liste = record
         mot:String;
         trieSvt:Pliste;
         motSvt:Pliste;
         first:boolean;
         end;

  6. #6
    Membre confirmé Avatar de bs.box
    Inscrit en
    Mai 2008
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 174
    Par défaut
    L'utilisation du "debugger" et parfoit trés utile;
    t'a déja débogguer ton code avec F8?
    Essaye pas à pas.

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

Discussions similaires

  1. Access Violation lors de la fermeture d'une application
    Par Jean-Jacques Engels dans le forum EDI
    Réponses: 1
    Dernier message: 22/06/2011, 12h33
  2. Mysql et fermeture de l'application
    Par fredero dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/05/2005, 20h16
  3. [Event]Annuler la fermeture d'une application
    Par willowII dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 16/11/2004, 09h28
  4. Problème de fermeture de l'application
    Par SkyDev dans le forum Langage
    Réponses: 2
    Dernier message: 16/06/2004, 02h06
  5. bouton ENTER = fermeture de l'application
    Par bigboomshakala dans le forum MFC
    Réponses: 2
    Dernier message: 10/05/2004, 11h14

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