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

Delphi Discussion :

Timer et Free


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Par défaut Timer et Free
    Bonjour tlm

    je viens demander de l'aide quant à un problème de mémoire la fermeture de mon application... je m'explique:

    Je créé un Timer( =>Timer1:= TTimer.Create(nil) ) dans un composant en cliquant sur un bouton qui apparait lorsque mon composant a le focus. Puis à l'évènement OnTimer, selon les conditions de tests, je laisse tourner le timer ou je le libère : Timer.free.

    mon soucis est que je n'arrive pas à comprendre pourquoi ici ça ne marche pas... lorsque j'utilise ce timer après un clic sur ce fameux bouton, tout se déroule comme je le souhaite, mais à la fermeture de l'appli, une erreur d'adresse:
    Exception EAccessViolation dans le module feuille_test.exe dans FFFFF001.

    Violation d'accès à l'adresse 00000001. Lecture de l'adresse 00000001.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    procedure TMonComposant.BtnClick(sender : TObject);
    begin
       inherited;
       Btn.visible:= false;
       Btn.ImgClick(self);
       Timer1:= TTimer.Create(nil);
       Timer1.Interval:= 600;
       Timer1.OnTimer:= OnTimer1;
       Timer1.Enabled:= true;
    end;
     
    procedure TMonComposant.OnTimer1(sender : TObject);
    begin
     
       if (condition1) then Btn.Visible:= false
       else begin
          if (self.Focused) then Btn.visible:= true;
          timer1.Free;
       end;
    end;

    Voila, j'espère avoir fourni toutes les infos nécessaires pour comprendre mon problème
    merci d'avance

    ludo

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    Règle de Base :

    NE JAMAIS LIBERER UN OBJET DANS UN GESTIONNAIRE D'EVENEMENT !

    car après le OnTimer, il y a encore du code de l'objet ...

    regarde comme est fait un release dans un TCustomForm et reproduit le même mécanisme ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éclairé Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Par défaut
    ok je vai voir ça

    merci shai

    ludo

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 27/05/2017, 10h14
  2. [horloge] conflit caractère / timer
    Par JeanJean dans le forum C
    Réponses: 10
    Dernier message: 09/05/2003, 23h47
  3. [] [Réseau] Anti-timer, anti-idle
    Par clonevince dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 15/01/2003, 22h19
  4. Timer de précision
    Par guigui dans le forum MFC
    Réponses: 1
    Dernier message: 04/12/2002, 15h21
  5. Timer en µsecondes
    Par Dagobert dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 25/11/2002, 00h59

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