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 Pascal Discussion :

Comment accéder à un double record dans une liste chaînée


Sujet :

Langage Pascal

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 40
    Points : 41
    Points
    41
    Par défaut Comment accéder à un double record dans une liste chaînée
    Bonjour à tous,

    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
     
     
    Tattribut = record
                  chemin : string;
                  affiche : boolean;
                end;
     
    Tcle = record
             nom : string;
             taille : integer;
             heure : integer;
           end;
    Telem = record
              cle : Tcle;
              attribut : Tattribut;
            end;
    Tlist = ^liste;
    liste = record 
                valeur :Telem;
                suivant : Tlist;
              end;
     
    Ttable = array[indmin..indmax] of Tlist;
    Je voudrais utiliser une liste chainée (peu importe le type de liste), cependant, comment puis-je accèder au champs TCLE.nom par exemple.

    Je voulais y accèder par cette façon mais j'ai des erreurs à chaque fois (en partant de chaque fois de liste):

    - liste^.valeur^.cle^.nom (pour accèder au nom) !

    D'avance, merci :-)

    Comment procède-t-on ?

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Noa,

    Tes champs valeur et cle ne sont pas des pointeurs.
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Le plus propre, lors d'un utilisation de liste chaînée, est d'allouer dynamiquement les objets (et bien sûr les libérer quand il n'y en a plus besoin). Tu peux ainsi définir des types PAttribut, PCle et PElem qui sont des pointeurs vers les types Attribut, Cle et Elem (comme tu l'as fait avec le type liste), et ensuite allouer/libérer avec New et Dispose. En faisant ceci, tu évites de te mélanger les pinceaux entre variables statiques et variables dynamiques: toutes les données "appartiennent" et sont gérées exclusivement par la liste chaînée. Ta liste peut alors être un objet intelligent qui dispose de primitives pour gérer l'ajout d'objet, la suppression, le tri, etc...

    Tu peux regarder un exemple ici, même si les procédures de gestion sont statiques et non des méthodes de l'objet Tliste. Le passage des procédures statiques vers des méthodes de l'objet n'est pas très compliqué à faire.
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  4. #4
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Citation Envoyé par replicator Voir le message
    Bonjour à tous,

    Je voudrais utiliser une liste chainée (peu importe le type de liste), cependant, comment puis-je accèder au champs TCLE.nom par exemple.

    Je voulais y accèder par cette façon mais j'ai des erreurs à chaque fois (en partant de chaque fois de liste):

    - liste^.valeur^.cle^.nom (pour accèder au nom) !

    D'avance, merci :-)

    Comment procède-t-on ?
    Comme l'a dit droggo, le champ valeur n'est pas un pointeur. Donc tu peut y acceder sans avoir recours au ^.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var nom : String;
    Begin
     nom :=  liste^.valeur.cle.nom ;
    END.
    Sinon, je ne vois pas le rapport avec une liste doublement chainée.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 40
    Points : 41
    Points
    41
    Par défaut
    Merci à vous

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

Discussions similaires

  1. Comment recupérer les cases selectionnés dans une liste à Checkbox
    Par Ange_1987 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/03/2009, 00h57
  2. Réponses: 15
    Dernier message: 14/04/2008, 16h32
  3. Réponses: 7
    Dernier message: 07/01/2008, 17h50
  4. Comment récupérer le texte sélectionné dans une liste déroulante ?
    Par Je-cherche-pfe dans le forum Windows Forms
    Réponses: 3
    Dernier message: 02/09/2007, 20h35
  5. Selectionner Un Record Dans Une Liste Deroulante
    Par benmacker dans le forum IHM
    Réponses: 6
    Dernier message: 16/05/2007, 16h13

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