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

Type file qui refuse d'enfiler et erreur de pointeur...


Sujet :

Langage Delphi

  1. #21
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Comprend plus rien moi

  2. #22
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 562
    Points
    3 562
    Par défaut
    Bon, ça c'est bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TFiledeboutons.afficher(F:PFileElem);
      begin
        if F^.Suivant <> nil then
        begin
          FLTete(F).Display(FLTete(F).x, FLTete(F).y);
          afficher(F^.Suivant);
        end
      end;
    ça, ça me gène, tu ne détruis pas le tmp.Elem (TMenuButton) qui reste en mémoire (d'où ta fuite):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     procedure FLDestroy(F: PFileElem);
      var
        tmp, tmp2 : PFileElem;
      begin
        tmp:= F;
        while tmp<>nil do
        begin
          tmp2:= tmp^.suivant;
          dispose(tmp);
          tmp:= tmp2;
        end;
    d'où plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     procedure FLDestroy(F: PFileElem);
      var
        tmp, tmp2 : PFileElem;
      begin
        tmp:= F;
        while tmp<>nil do
        begin
          tmp2:= tmp^.suivant;
          tmp.elem.free;
          dispose(tmp);
          tmp:= tmp2;
        end;
    Là, il n'y a plus de fuite..

  3. #23
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Citation Envoyé par waskol
    Bon, ça c'est bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TFiledeboutons.afficher(F:PFileElem);
      begin
        if F^.Suivant <> nil then
        begin
          FLTete(F).Display(FLTete(F).x, FLTete(F).y);
          afficher(F^.Suivant);
        end
      end;
    A moins que afficher modifie F^.Suivant, je ne vois pas comment F^.Suivant peut changer.

  4. #24
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 562
    Points
    3 562
    Par défaut
    Salut MD Software !

    haaaaaaaa..... la récursivité...

    essaies de voir son code comme ça (code non récursif, donc certainement meilleur pour la pile mémoire (le stack) ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TFiledeboutons.afficher(F:PFileElem);
      begin
        while F^.Suivant <> nil do
        begin
          FLTete(F).Display(FLTete(F).x, FLTete(F).y);
          F:=F^.Suivant;
        end
      end;
    Quand il fait
    Afficher(F^.suivant); dans son code, on rerentre dans la procedure afficher avec F:=F^.suivant, donc F(i)=F(i+1)

  5. #25
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Houlàlà, je viens de piger.
    J'ai pas de problème avec la récursivité, j'avais juste pas remarqué que la méthode s'appellait afficher. C'est pour ça que j'arrêtais pas de demander à voir le code de afficher.
    Faut que j'apprenne à lire !

    Bon, j'ai rien dit, pas de sourcis sur afficher

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. affichage message d erreur à coté d'un type file
    Par intel42 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 28/06/2012, 20h10
  2. [ZF 1.11] Element file formulaire qui n'affiche pas les erreurs
    Par absot dans le forum Zend_Form
    Réponses: 3
    Dernier message: 25/11/2011, 11h52
  3. type="file" erreur si vide
    Par afrodje dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/04/2009, 11h24
  4. champ de type file qui se vide.
    Par Switch03 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/11/2008, 14h40
  5. [DOM] input type=file + submit() => Accès refusé
    Par cyrilc dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 31/05/2007, 16h29

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