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 :

EAccessViolation error avec tableau de pointeur


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 119
    Points : 98
    Points
    98
    Par défaut EAccessViolation error avec tableau de pointeur
    Bonjour à tous, j'ai un problème que je ne parviens pas à résoudre.
    J'essaye de faire un tableau de pointeur sur des listes contenant diverses informations.

    Ce code compile mais je recois une erreur du type EAccessViolation avec comme message : ' Violation d'accès à l'adresse .... '

    Voici le code :

    la procedure resetTab qui sert à initialiser chaque case du tableau à NIL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure resetTab(var tab:Ttab);
     var i : integer;
     
      begin
             for i:=0 to high(tab) do tab[i]^.trieSvt:=nil;
      end;
    Et le code servant à placer une information dans la liste :

    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
    procedure placeMotTrie(mot,vraiMot:string;indice:integer;tab:Ttab);
     
      var i,cour,nv:Pliste;
     
    begin
    //Creation de la cellule à ajouter à la liste.
    nv:=new(PListe);
    nv^.mottrie:=mot;
    nv^.trieSvt:=NIL;
    nv^.Pcellule:=NIL;
     
     //Si c'est la première insertion dans le tableau à cet indice.
    if tab[indice]^.trieSvt=Nil then tab[indice]^.trieSvt:=nv
     
                    //Sinon parcourir jusqu'à trouver l'emplacement correct.
                     else begin
     
     
                        i:=tab[indice];
                        cour:=tab[indice];
     
                      while i^.trieSvt<>NIL do begin
                        cour:=i^.trieSvt;
                        i:=cour;
                                               end;
                        //ajouter la cellule.
                        cour^.trieSvt:=nv;
     
     
     
     
                                                   end;
     
    end;
    Voyez-vous un problème d'accès dans ce code ?

    Merci d'avance.

  2. #2
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 119
    Points : 98
    Points
    98
    Par défaut
    Personne pour un petit conseil ?

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 534
    Points : 25 082
    Points
    25 082
    Par défaut
    on supposer queLa TList ne propose pas déjà quelque chose de similaire ?

    as tu fais un trieSvt est une liste chainée ???

    lance en pas à pas, et active l'option du débuggeur "Arrêter sur Exception Delphi"
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 119
    Points : 98
    Points
    98
    Par défaut
    merci pour l'aide, mais j'au trouvé, je n'avais pas fais de new() pour un des pointeurs.


    Merci qd meme.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/05/2008, 00h55
  2. pb avec vectors de pointeurs
    Par e-teo dans le forum SL & STL
    Réponses: 5
    Dernier message: 27/07/2005, 14h11
  3. [JComboBox] Remplissage avec tableau de String
    Par linkit dans le forum Composants
    Réponses: 2
    Dernier message: 26/05/2005, 21h39
  4. Réponses: 11
    Dernier message: 29/04/2005, 19h45
  5. Runtime error avec UDF/DLL
    Par pram dans le forum SQL
    Réponses: 6
    Dernier message: 22/04/2005, 10h30

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