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

Composants VCL Delphi Discussion :

Violation Mémoire composant


Sujet :

Composants VCL Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut Violation Mémoire composant
    Bonjour,

    J'ai créé un composant dérivant de TCustomControl (cf topic dans ce forum: composant formé de plusieurs autres) et je pense avoir (c'est sur même) oublié une dé-allocation d'objet.

    J'explique:

    Le composant peut être intégré dans une forme, et il fonctionne bien. Lorsque je quitte la forme, j'ai une violation mémoire dans mon exe généré. je valide et j'ai une autre violation. Enfin lorsque je quitte delphi (car il ne fonctionne plus correctement), j'ai encore une violation mémoire. (La mémoire ne peut être read)

    Je fournis le source du composant, si vous pouviez m'indiquer ce qui manque, avec une petite explication histoire de ne pas me coucher trop bête.

    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut Resolu
    Toutes mes excuses, j'ai trouvé le problème.

    évidemment il faut que j'ai posté pour l'identifier: esprit pervers.

    Bon pour info c'est lorsque dans le créate du composant j'appel les créates des sous composants, pour FEcriture j'appel Create(FLecture) au lieu de Self (ou l'inverse).

    évidement il n'aime pas.

    Si ce sujet est inutile, ne pas hésiter à supprimer.

    A bientot

  3. #3
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Salut.

    J'ai pas de Delphi sous la main pour tester, mais en toute première approche, moi j'inverserais la libération de FLecture et FEcriture, puisque le second dépend du premier, si j'ai bien compris.
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    destructor TAnalogique.Destroy;
    begin
      FLabel.Free;
      //FLecture.Free; si mis ici, le FEcriture va être orphelin, nan ?
      FEcriture.Free;
      FLecture.Free; // probablement mieux ici
      ...
    Ou alors j'ai rien pigé ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #4
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Salut.

    J'ai pas de Delphi sous la main pour tester, mais en toute première approche, moi j'inverserais la libération de FLecture et FEcriture, puisque le second dépend du premier, si j'ai bien compris.
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    destructor TAnalogique.Destroy;
    begin
      FLabel.Free;
      //FLecture.Free; si mis ici, le FEcriture va être orphelin, nan ?
      FEcriture.Free;
      FLecture.Free; // probablement mieux ici
      ...
    Ou alors j'ai rien pigé ?
    Le problème venait exactement de ça, seulement c'est une erreure de ma part, car je voulais du Self, pas le FLecture. Donc heureusement que j'ai déalloué dans le mauvais sens, sinon je ne me serais jamais rendu compte de cette bétise.

    Enfin merci d'avoir regardé, et bonne journé

    kriboo

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/02/2015, 14h54
  2. Adresse mémoire composée de 7 chiffres
    Par yessine66 dans le forum C
    Réponses: 2
    Dernier message: 07/11/2010, 13h45
  3. Violation d'accès avec les composants Word 97/ 2000
    Par edechaux dans le forum Composants VCL
    Réponses: 3
    Dernier message: 07/03/2006, 09h48
  4. Violation d'acces lors d'une destruction d'un composant
    Par Rayek dans le forum Composants VCL
    Réponses: 15
    Dernier message: 23/11/2005, 11h37
  5. Je recherche un composant Tree non visuel, structure mémoire
    Par bambino3996 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 05/09/2005, 17h03

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