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 :

utilisation du TTimer


Sujet :

Langage Delphi

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Prog
    Inscrit en
    Janvier 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Prog

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut utilisation du TTimer
    Bonjour,
    Je voulais savoir si c'est possible de stocker dans une variable les centièmes les minutes et les seconds pour en faire un historique d'un chrono? car apparemment Delphi râle quand je fais ceci :

    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
    procedure Tchronometre.tourBtnClick(Sender: TObject);
    Begin
      //tabHisto est un tableau de structure
      // tailleTab est une variable globale
           tabHistorique[tailleTab].minuteCh := intToStr(tailleTab) +' tour            
           :'+IntToStr(m) + ' minute(s) ';
           tabHistorique[tailleTab].secondCh :=  intToStr(j) + ' second(s) ';
           tabHistorique[tailleTab].CentCh := intToStr(i) + ' centième(s)'
           tailleTab := tailleTab + 1 ;
    End;
     
    procedure Tchronometre.historiqueBtnClick(Sender: TObject);
    //bouton affichant l'historique dans listbox
    var
    l : Integer;
    p : Integer;
    begin
    p := tailleTab-1;
    For l := 0 to p Do
    Begin
         listHisto.Visible := True;
         listHisto.Items.Add (tabHistorique[l].minuteCh);
         listHisto.Items.Add (tabHistorique[l].secondCh);
         listHisto.Items.Add (tabHistorique[l].centCh);
         listHisto.Visible := True;
    end;
    tailleTab := 0;
    end;
    Merci d'avance

  2. #2
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut

    ou est le TTimer dans tout sa?
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  3. #3
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    C'est la dimension de tabHistorique qui n'est pas fixée au départ.
    Il a une dimension nulle et tu lui affectes une valeur...
    et tu le dimensionnes à la fin !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure Tchronometre.tourBtnClick(Sender: TObject);
    Begin
      inc(tailleTab);
      SetLength(tabHistorique,tailleTab);
      tabHistorique[tailleTab-1].minuteCh := intToStr(tailleTab-1) +'tour            
           :'+IntToStr(m) + ' minute(s) ';
      tabHistorique[tailleTab-1].secondCh :=  intToStr(j) + ' second(s) ';
      tabHistorique[tailleTab-1].CentCh := intToStr(i) + ' centième(s)'; 
    End;

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 744
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 744
    Points : 13 303
    Points
    13 303
    Par défaut
    Certainement un TailleTab -1 au remplissage du tableau.

    Maintenant, TTimer n'est pas une horloge complète, mais seulement un composant qui génère un événement toutes les N millisecondes.

    Tu devrais créer un tableau de TTime et ne faire la mise en forme que lors de l'affichage de l'historique:

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    var
      LapTimes :array of TTime;
     
    procedure TForm1.bStartClick(Sender: TObject);
    begin
      //Heure de départ
      SetLength(LapTimes, 1);
      LapTimes[0] := Time;
     
      //Démarrage du timer pour l'affichage du tour en cours
      Timer1.Enabled := TRUE;
    end;
     
    procedure TForm1.bLapClick(Sender: TObject);
    var
      Lap :integer;
     
    begin
      //Fin du tour -> Ajout
      Lap := Length(LapTimes);
      SetLength(LapTimes, Lap +1);
      LapTimes[Lap] := Time;
    end;
     
    procedure TForm1.bEndClick(Sender: TObject);
    var
      i: Integer;
     
    begin
      Timer1.Enabled := FALSE;
     
      //Historique. Différence entre le tour courant et le tour précédent
      for i := 1 to High(LapTimes) do
        ListBox1.Items.Add(FormatDateTime('n "min." s "sec." z "milli."', LapTimes[i] -LapTimes[i-1]));
    end;
     
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      //Tour en cours
      Caption := FormatDateTime('n "min." s "sec."', Time -LapTimes[High(LapTimes)]);
    end;

Discussions similaires

  1. Utilisation d'un TTimer
    Par plou_fr dans le forum Composants VCL
    Réponses: 2
    Dernier message: 02/02/2008, 15h26
  2. Réponses: 3
    Dernier message: 30/10/2007, 12h56
  3. Réponses: 26
    Dernier message: 13/12/2006, 07h35
  4. Je ne sais pas utiliser TTimer
    Par Akeon dans le forum C++Builder
    Réponses: 3
    Dernier message: 17/11/2006, 14h35
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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