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 :

probleme avec le timer


Sujet :

Composants VCL Delphi

  1. #1
    Membre actif
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Points : 267
    Points
    267
    Par défaut probleme avec le timer
    bonjour j essaie de realiser un chronometre.Pour l instant je n en suis qu a la gestion des secondes.mais j ai un probleme j ai consideré l evenement on timer et j ai mis un intervalle de 1000.j ai fait un label qui recevra les secondes.voici le code que j ai tapé dans on timer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    procedure TForm1.Timer1Timer(Sender: TObject);
     
    var
     
    seconde:integer;
    begin
    seconde:=0;
     
    seconde:=seconde+1;
    label_sec.caption:=inttostr(seconde);
     
     
    end;
    quand je lance le programme le label seconde affiche 1 et apparemment s arrete.Dois Je comprend donc qu une fois le premier interval de 1000 passé le timer s arrete?

    j ai donc essayer de mettre ce bloc d instruction dans une boucle repeat....until timer1.enabled=false; en ajoutant un bouton qui met le timer afalse par la suite.

    mais probleme a l execution plantage apparement ça lui plait pas du tout.

    comment faire pour que le timer continu apres l intervalle de 1000 ms

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut Re: probleme avec le timer
    Tout d'abord, je t'invite à lire les règles du forum : il faut entourer ton code de balises [code], afin qu'il soit plus lisible.

    À présent, regarde bien ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    seconde:=0;
    seconde:=seconde+1;
    Autrement dit :

    Donc non ton timer ne s'arrête pas, mais il affecte toujours la valeur 1 à ton label.

    Il faut créer une variable globale, ou un champ de ta classe fiche, initiliasée à 0 lors du OnCreate et incrémentée lors du OnTimer.

    Et encore, cette technique n'est pas excellente, puisque Windows n'est pas un OS temps réel, ce qui signifie que les appels à OnTimer ne sont pas espacés exactement de 1 seconde.
    Il faut plutôt enregistrer le GetTickCount au début du traitement, puis afficher lors du timer la différence du GetTickCount avec la valeur enregistrée au départ, et la diviser par 1000 (car GetTickCount renvoie en millisecondes).
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Membre actif
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Points : 267
    Points
    267
    Par défaut
    dsl pour l oubli de la balise code je le savais en plus

    je suis obligé d utiliser le timer c est dans les consignes de l exo

    une question comment creer une variable global?c est quoi?c est c est ce qu on declare avant le code?
    je ne dois donc pas utiliser de label?

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    C'est mon jour de bonté, voilà le code :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    unit Unit1;
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Timer1: TTimer;
        procedure Timer1Timer(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        seconde : integer ;
        { Public declarations }
      end;
     
    var Form1: TForm1;
    implementation
    {$R *.dfm}
     
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin inc(seconde) ; edit1.text:=inttostr(seconde) ; end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin seconde:=0 ; edit1.text:=inttostr(seconde) ; end;
     
    end.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

Discussions similaires

  1. probleme avec mon timer
    Par cosmoff dans le forum MPLAB
    Réponses: 0
    Dernier message: 30/06/2014, 17h52
  2. probleme avec le timer
    Par Nik_Henri dans le forum VB.NET
    Réponses: 3
    Dernier message: 26/11/2010, 00h53
  3. Probleme avec Timer, TimerTask
    Par Microturnip dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 12/05/2008, 23h16
  4. problem avec un timer
    Par ridouani dans le forum C++
    Réponses: 5
    Dernier message: 20/09/2005, 16h43
  5. [Thread] Probleme avec mon Timer
    Par Nico66 dans le forum EDT/SwingWorker
    Réponses: 10
    Dernier message: 02/06/2005, 17h10

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