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

Delphi Discussion :

Problème de pointeurs sur classe


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Points : 34
    Points
    34
    Par défaut Problème de pointeurs sur classe
    Bonjour,

    Je vais de présenter mon problème le plus simplement possible.
    Il s'agit d'un problème de pointeurs contenus dans une classe pointant sur elle-même.
    voilà ce qui nous interesse.
    PObj = ^TObj;
    TObj = class
    private
    Links:array of PObj;
    end;

    A l'initialisation, le tableau Links est rempli avec 4 éléments par exemples, pointant sur 4 objets distincts et differents de l'objet propriétaire.
    Le tableau Links est parcouru dans une procedure de la classe Obj.
    Jusque la tout fonctionne.
    Cependant, quand on ajout un élément au tableau Links, pointant vers un nouvel objet fraichement créé, la procedure plante.
    En faite celle-ci accède à des données des objets liés. Et lors de cet accès, une méchante erreur est provoquée (EAccessViolation)
    Pourtant ces données sont de simples entiers et ils sont accédés qu'en lecture. De plus cela fonctionne très bien à l'état initiale.

    Lors de l'initialisation, 5 objets sont créé, puis, le premier à sont tableau Links modifié en pointant vers les 4 autres.
    C'est ensuite, que l'on ajout un 6eme élément, et qu'on ajout le lien vers celui-ci dans le premier.

    Voilà, j'espère que vous m'avez compris, et que vous pourrez de donner une indication, car là je ne comprend pas du tout pourquoi il y a cette erreur.

    Merci
    @+
    Fabs

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    je pense que tu peux te simplifier la tâche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TObj = class; // déclaration préalable
     
    TObj = class
      private
       Links: array of TObj; // les objets sont des pointeurs, au fond
    end;
    cela dit, ta violation d'accès ne serait-elle pas plutôt liée à un mauvais indice dans le tableau Links ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

Discussions similaires

  1. Problème de pointeur sur une fonction
    Par CodeurNé dans le forum C
    Réponses: 4
    Dernier message: 03/10/2007, 22h45
  2. Probléme de pointeur sur fonction
    Par TSalm dans le forum C++/CLI
    Réponses: 11
    Dernier message: 25/07/2007, 22h53
  3. Réponses: 4
    Dernier message: 15/10/2006, 18h05
  4. Problème de pointeur sur une table de hashage
    Par nicdesf dans le forum Langage
    Réponses: 3
    Dernier message: 07/09/2006, 19h23
  5. Problème de *pointeur sur des char
    Par Spartan03 dans le forum C++
    Réponses: 2
    Dernier message: 18/09/2005, 14h20

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