Bon je vais vous faire part de ma stup�faction ...
dans mon appli je compte le temps qu'une info est a 1 ou a 0 (lecture d'entr�e digital sur une carte PCI). Bon sa sa va.
Donc toute les seconde j'incr�mente une variable si l'info est a 1, et j'incr�mente une autre si elle a z�ro.
Donc jai deux variable une qui indique le temps en seconde ou linfo a �t� a 1 et l'autre quand elle �t� a z�ro.
En metant ces incr�mentation dans un thread avec un sleep, j�t� pas tr�s pr�cis.
Donc jai esseyer avec un TTimer, Interval 1000.
Jai laiser l'appli compter, et jai afficher l'horloge windows a cot� ... et surprise quand l'horloge windows a vue pass� 15 min mon appli n'en a compter que 14min45s
Je pensais que le Timer avais une bonne pr�cision a la seconde ... comment pourais palier a ce probl�me, sans utiliser GetTickCount ?
voila le code du Timer pour info :
Cordialement Baxter
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 void __fastcall TFormPrincipale::Timer1Timer(TObject *Sender) { if(FormPrincipale->Machine1.bEnreData == true) { if(FormPrincipale->Machine1.bEntree1 == true) FormPrincipale->Machine1.dTempsMarche++; else FormPrincipale->Machine1.dTempsDarret++; } if(FormPrincipale->Machine2.bEnreData == true) { if(FormPrincipale->Machine2.bEntree1 == true) FormPrincipale->Machine2.dTempsMarche++; else FormPrincipale->Machine2.dTempsDarret++; } if(FormPrincipale->Machine3.bEnreData == true) { if(FormPrincipale->Machine3.bEntree1 == true) FormPrincipale->Machine3.dTempsMarche++; else FormPrincipale->Machine3.dTempsDarret++; } if(FormPrincipale->Machine4.bEnreData == true) { if(FormPrincipale->Machine4.bEntree1 == true) FormPrincipale->Machine4.dTempsMarche++; else FormPrincipale->Machine4.dTempsDarret++; } if(FormPrincipale->Machine5.bEnreData == true) { if(FormPrincipale->Machine5.bEntree1 == true) FormPrincipale->Machine5.dTempsMarche++; else FormPrincipale->Machine5.dTempsDarret++; } }
Partager