dbzpunkrocker
Messages postés6Date d'inscriptionmardi 13 janvier 2009StatutMembreDernière intervention26 février 2009
-
15 févr. 2009 à 22:46
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 2009
-
18 févr. 2009 à 09:40
Bonjour,
je suis étudiant en première année de DUT Informatique, et je n'arrive pas à faire un exercice qui consiste à créer un Timer... Voici l'énoncé :
"Le temps de départ est fixé par le programmerur. Tant que l'utilisateur n'a pas appuyé sur le bouton Fin, le chronomètre avance.
Il faut utiliser 3 variables globales (heures, minutes,secondes)."
Et voici ce que j'ai fait :
procedure Tchrono.TimerTimer(Sender: TObject);
var
i,secondes,minutes,heures: integer;
begin
secondes:=00;
minutes:=00;
heures:=00;
for i:=01 to 3600 do
secondes:=secondes+01;
if secondes>59 then
begin
secondes:=00;
minutes:=minutes+01;
if minutes>59 then
begin
minutes:=00;
heures:=heures+01;
end;
end;
secondes1.caption:=inttostr(secondes);
minutes1.caption:=inttostr(minutes);
heures1.caption:=inttostr(heures);
end;
end.
Pouvez-vous me dire où cela coince svp ? et m'indiquer la direction à prendre ? merci bien !
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 16 févr. 2009 à 01:03
Salut,
Tout est dans l'énoncé :
« Il faut utiliser 3 variables globales ...»
Ca coince parce que tu initialises à zéro tes variables toutes les secondes.
Ensuite, c'est pareil avec ta boucle. Demande-toi à quoi elle sert car elle est parcourue toutes les secondes aussi...
dbzpunkrocker
Messages postés6Date d'inscriptionmardi 13 janvier 2009StatutMembreDernière intervention26 février 2009 16 févr. 2009 à 08:40
Merci pour ta réponse cela m'a un peu aidé! Maintenant je ne sais pas comment faire car je pense qu'il ne fait qu'une seule fois l'évènement OnTimer et je ne sais pas comment faire pour lui dire de recommencer....
Si quelqu'un pourrait m'expliquer svp ?
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 18 févr. 2009 à 09:40
ha, Foxi nous as fait un très bonne réponse.
Y a just le GetTickCount qui me chiffone...
#1 : la diff avec 1000 est perdu. ce qui fait que si le timer est appelé tout les 995[ms] tu vas perdre la moitié des secondes... (rapplons que GetTickCount a une résolution de ~16ms)
et si il est appelé tout les 1100[ms] tu vas prendre un retard de 100ms par sec.
-> faudrait garder la diff restante et la soustraire de TickPrec dans le test.
#2 : pour la version homologué, faudrait utiliser une var local pour au lieu d'appeler deux fois GetTickCount.
#3 : aussi l'avance (hmi) peut-être un peu reatrdée (en fct de la fréquence du timer)
je me demande seulement si dbzpunkrocker pourra expliquer à son prof "comment et pourquoi".
Enfin, c'est une bonne occas pour apprendre...
Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.