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 :

Variation de l'intervalle du Timer


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Variation de l'intervalle du Timer
    Bonjour,

    Je dois modifier les valeurs d'une variable à un instant t. Le problème est que le temps entre deux changements varie, et c'est là que je ne sais pas comment gérer les différents délais.
    Voici le code que j'avais utilisé qui ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.btEcriture2Click(Sender: TObject);
          var j: integer;
    begin
          n := 0;
          for j:=0 to n_max do
          begin
            n := j;
            Attente.Interval := tb_time[n];
            Attente.Enabled := true;
          end;
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.AttenteTimer(Sender: TObject);
    begin
            csg_temp := FormatFloat('0000.0',tb_temp[n]);
            inc(n);
            Attente.Enabled := false;
    end;
    Merci

  2. #2
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    Le problème, c'est que le timer est asynchrone, donc ta boucle se termine avant que ton timer ne soit déclenché.
    Il faut donc que tu aie un champ dans ta classe par exemple (ou le tag du timer), pour determiner ton "n"
    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
    procedure TForm1.btEcriture2Click(Sender: TObject);
          var j: integer;
    begin
      //on suppose que le n_max est toujours >= 0
      Attente.Interval := tb_time[0];
      Attente.Tag := 0; //ici on memorise le n
      Attente.Enabled := true;
    end;
     
    procedure TForm1.AttenteTimer(Sender: TObject);
    begin
      csg_temp := FormatFloat('0000.0',tb_temp[Attente.Tag]);
      //on passe au suivant
      Attente.Tag := Attente.Tag + 1;
      if Attente.Tag <= n_max then
        Attente.Interval := tb_time[Attente.Tag]
      else
        Attente.Enabled := false; //on a terminé, on arrete
    end;

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Merci bien !
    J'ai une autre petite question, si mes temps sont de l'ordre de plusieurs minutes, ce n'est donc pas d'utiliser le timer à cause du type cardinal, non ?

  4. #4
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    cardinal : entier non signé sur 4 octets, soit un peu plus de 4 milliards
    Le timer doit être en millisecondes, donc ca fait 4 millions de secondes, soit 1111 heures, donc tu as de quoi faire

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Niquel, encore merci alors !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/10/2011, 08h16
  2. Timer et intervalle
    Par ugo188 dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 29/04/2009, 23h54
  3. Timer et Intervalles
    Par remsrock dans le forum C#
    Réponses: 3
    Dernier message: 18/09/2008, 12h03
  4. limite de l'intervalle du controle timer
    Par louzar dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/07/2007, 11h13
  5. [Timer]Comment mesurer un intervalle de temps ?
    Par Pill_S dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/05/2004, 17h39

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