Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4160 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  TTreenode.Data + Pointeurs / HEELLLPP PLZ !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

TTreenode.Data + Pointeurs / HEELLLPP PLZ !

n°1340772
mkracing66
Posté le 06-04-2006 à 16:21:38  profilanswer
 

Bonjour,
voila dans un treeview il y a la propriete Data (Pointer) qui permet de stocker des informations.
 
Je voudrais memoriser plusieurs infos a partir d une structure pour chaque noeuds.
Mais pas moyen de pouvoir recuperer mes infos, est ce un pb de pointeur ou de mon utilisation du Data ??
 
Voici du code plus detaille de ce que je voyais :
 
Type
  PMaVar = TMaVar^
  TMaVar = record
    monchemin: string;
    test: integer;
    fichier: string;
  end;
 
 
 
une fonction qui permet de reconstituer mon arborescence dans le treeview a partir d une bdd où je definis chaque data de chaque noeud en boucle :
 
    CNode := treeviewCible.Items.AddChild(PTreeNode_Actuel^, requete.FieldByName('EMPLACEMENT').AsString);
    New(Ptr);
    Ptr^.test   := requete.FieldByName('PROFONDEUR').AsInteger;
    Ptr^.monchemin := requete.FieldByName('POSITION_NODE').AsString;
    Ptr^.fichier     := requete.FieldByName('CHEMIN_EMPLACEMENT').AsString;
    Pointer_List.Add(Ptr);
    CNode.Data:= @Ptr;
    PTreeNode_Actuel:= @CNode;
 
et ensuite je voudrais ajouter un noeud a partir d un bouton mais quand je fais :
 
  iPosition := TMaVar(twEmplacement.Selected.data^).test;
 
pour recuperer justement une des informations dont j ai besoin, la valeur recuperee est totalement erronee.
Je n ai pas de plantage, mais des valeurs qui ne sont pas bonnes (genre 5 au lieu de 0 pour un integer, et du nimporte quoi pour les string.
 
 
 
QQun saurait il me dire pk ? y a t il un gros souci qq part dans mon code ?
 
Merci a toute ame genereuse qui essayera de faire avancer le schmilblick  :jap:


Message édité par mkracing66 le 06-04-2006 à 16:40:46
mood
Publicité
Posté le 06-04-2006 à 16:21:38  profilanswer
 

n°1341487
el zozo
Stroumf Grognon
Posté le 07-04-2006 à 14:43:12  profilanswer
 

La première remarque, c'est que tu complique pour rien : Mettre  des pointeur partout ç'est mal(oui:je suis le président de l'Association d'Extermination des Pointeurs de Pointeurs)
 
Rapel1 : un objet est un pointeur.
Rapel 2 : un pointeur est une variable de 4 octect contenant une adresse
La ligne "PTreeNode_Actuel:= @CNode;" toute seul est dèja tout un poème.  [:adodonicoco]  
 
CNode est une variable contenant une adresse.
@CNode est l'adresse de la variable contenant une adresse
Apperemment, PTreeNode_Actuel est un pointeur pointant sur un TTreeNode
Donc, PTreeNode_Actuel est une variable destiné à contenir l'adresse d'une varible contenant une adresse  [:gijar]  
 
Du coup, la ligne est effectivement corecte, mais p'tet un poil trop compliqué, non?
 
 
Code sugeré :
 

var TreeNode_Actuel : TTreeNode;
  MaVar : TMaVar;
 
(...)
    CNode := treeviewCible.Items.AddChild(TreeNode_Actuel, requete.FieldByName('EMPLACEMENT').AsString);  
    New(Ptr);  
    Ptr^.test   := requete.FieldByName('PROFONDEUR').AsInteger;  
    Ptr^.monchemin := requete.FieldByName('POSITION_NODE').AsString;  
    Ptr^.fichier     := requete.FieldByName('CHEMIN_EMPLACEMENT').AsString;  
    Pointer_List.Add(Ptr);
    CNode.Data:= Ptr;  //et non @Ptr. Par contre, si tu avais un Variable de type TMaVar, tu pourait metre CNode := @MaVar
    TreeNode_Actuel:= CNode;


 
Je sais pas si ça sufira (par exemple, j'espère que tu initialise TreeNode_Actuel avant d'entrer dans la boucle), mais au moin, ca simplifie le debugage  [:airforceone]  
 
Note : Tu peut définitivement te débarasser des pointeur (du moin des pointeur explicite) en transformant ton record en un objet (les record sont pratique pour lire/ecrire dans des fichiers, mais si tu met des "String" dedant, ça vas pas bien marcher)


Message édité par el zozo le 07-04-2006 à 14:52:23

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  TTreenode.Data + Pointeurs / HEELLLPP PLZ !

 

Sujets relatifs
Pointeurs intelligents et liste chainéePointeurs sur fonction membre, héritage, toussa
[C] Problème de pointeurs et d'allocationData Binding
Les pointeurs en JavaASP - HTML récupéré data HTML dans pages .ASP
[C++] Les différents types de pointeurs sur fonction ?Pointeurs, gestion de la memoire (Pascal)
<img src="data:image/gif;base64 et IE ( "inline image" )Demande d' aide sur les pointeurs
Plus de sujets relatifs à : TTreenode.Data + Pointeurs / HEELLLPP PLZ !


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)