2009-10-18 4 views
0

Comment restaurer l'état des nœuds dans VirtualStringTree (lesquels ont été développés) lors de la reconstruction de l'arborescence? Mon application utilise VirtualStringTree (l'un des meilleurs composants JAMAIS!)Delphi, VirtualStringTree - arbre de reconstruction, état de restauration (nœuds étendus)

Maintenant, ce dont j'ai besoin est de reconstruire l'arbre chaque fois que l'application est démarrée. Dans la plupart des cas cependant, le "nouvel" arbre est le même que celui construit la dernière fois ... ou au moins très similaire. Quel est le meilleur moyen de restaurer l'état des nœuds? Lesquels ont été étendus et ainsi de suite ... Je ne trouve pas qu'il est pratique d'étendre tous les nœuds manuellement chaque fois que je lance l'application ... et donc mes utilisateurs, je crois. Malheureusement, en raison de restrictions de confidentialité, je ne peux pas enregistrer l'arborescence dans un fichier, puis le charger, et comparer les nœuds existants lors de la reconstruction (ajout/suppression si nécessaire) ...

Répondre

2

Enregistrer uniquement la topologie de l'arbre, par ex. index des nœuds étendus pour chaque niveau.

Vous pouvez également créer une liste de hachages pour une valeur de nœuds invariants et stocker des hachages uniquement pour les nœuds étendus de cette liste. De cette façon, vous conserverez l'état même si la topologie est modifiée, mais au prix d'une confidentialité réduite.

+0

Le stockage des hachages de nœuds étendus n'abaisse en rien la confidentialité, à moins que ce que vous essayez de garder confidentiel soit le fait que certains nœuds ont été développés. Pour obtenir le hachage d'un noeud, vous devez déjà avoir les données utilisées pour calculer le hachage, et si vous l'avez déjà, alors que reste-t-il à cacher? –

+0

Rob, je pense qu'il se réfère à la situation où vous voulez "rafraîchir" les données tout en gardant la topologie du mieux que vous le pouvez. Vous voudrez rouvrir les nœuds ouverts même si un nouveau nœud est inséré entre les deux. Ainsi, vous avez besoin de l'identifiant des nœuds ouverts. –

Questions connexes