bonjour,

J'ai un probleme, mon soft doit compresser des données de type txt par la methode d'huffman, avec construction dynamique de l'arbre. Lorsque je parcours l'arbre pour assigner le code du caractere lu, je pars de la lettre et je descend vers le noeud principal. Pour détecter le noeud principal je regarde la probabilité du noeud (fréquence), et quand elle est egale a 100 je sort de ma boucle pour ecrire le code...
Cela marche pour les premiers caractères(Nombre aléatoire), puis au bout d'un moment, quand PNoeud.Prob=100, on rentre quand meme dans la boucle et comme il n y a pas de racine(noeud principal) la nouvelle assignation d'adresse à PNoeud ne passe pas ("valeur inaccessible") et cela déclenche une exception.

TableOfChar--> table des caracteres
PNoeud--> pointeur sur element de TableOfChar ou sur un Noeud


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
PNoeud:=@TableOfChar[i];

            while(  PNoeud.Prob<>100  ) do    //tant que l on est pas au noeud final
            begin

              if (PNoeud.Poids=True) then bit:=1
              else bit:=0;
              CodeTmp:=CodeTmp or (bit shl(BitId));     //fabrication de l'octet
              BitId:=BitId+1;

              PNoeud:=PNoeud.Racine;                    //on va au noeud suivant

            end;

ERREUR
**********************************************************
Violation d'acces à l'adresse 00451C0B dans le module.... Lecture de l'adresse 00000008.
**********************************************************

Je ne sait pas du tout d'ou cela peut provenir. Si quelqu'un a une idée...
Merci d'avance.
[Balises CODE rajoutées par Pedro.Merci d'y penser à l'avenir]