Comment accéler un timer à donf' de chez donf' ?!!

vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022 - 14 mai 2009 à 14:50
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 15 mai 2009 à 09:42
Salut, j'ai envie de me faire une machine à voyager dans le temps (mais qui ne marcherai pas dans la réalité :D)
Genre le défilement des dates, des heures tout ça, comme dans le film "la machine à voyager dans le temps"...

Je sais faire une horloge complète genre :

seconde
minutes
heures
jours
mois
année
siècle

mais qui puisse aussi speeder comme pas possible, en restant cohérente, ben nan...
Le fait est que concernant les timers, j'arrive pas à descendre en dessous du "1", parce que quand je met à 1, il n'y a guère que les secondes voire les minutes, et très très peu, les heures qui speedent, le reste se traine un peu... et pour passer d'un jour à l'autre on a le temps de dormir quoi.
Pour l'instant j'ai fait un truc bidon, avec les ss, mm et hrs qui speedent comme des malades, mais les 3 données ne se suivent pas, bien sûr...
Et j'ai appliqué le 1 aux jours. Les mois évoluent et les années e les siècles, avec cohérence...

Une idée pour contrer ce "contre-temps" et faire un truc cohérent des Secondes aux Siècles? :D
A voir également:

9 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 mai 2009 à 15:05
un timer ne descendra pas a un intervalle de 1 milliseconde.
encore qu'avec une valeur si basse, RIEN ne garanti son exactitude...

quand a l'interet de la chose...

Private Sub Form_Load()
Dim nTime As Long
Me.Show
Do
nTime = nTime + 789
If (nTime And &H800) = 0 Then
Label1.Caption = DateAdd("s", nTime, Date)
DoEvents
End If
Loop
End Sub
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
14 mai 2009 à 15:12
Salut
Curieux projet, sympa
Impossible de te dire ce qui cloche dans ton affaire sans avoir le code sous les yeux.
La seule manière d'être cohérent entre toutes ces données, liées par des coefficients, est de n'avoir qu'une seule variable.
C'est cette variable qu'il faut manipuler dans ton Timer qui tourne à donf de super donf de la mort.
Après chaque modif de cette valeur, il faudra recalculer les ss, nn, hh, dd, mm, yy, cc ... et les afficher dans tes Labels.

Pour des dates courantes (de notre époque), les fonctions DateDiff, DateAdd, DatePart ... seraient toute indiquée, mais il me semble elles ne savent fonctionner qu'entre 1750 et 2099 (à confirmer)
Sinon, il ne reste plus qu'à calculer toi même ces éléments à partir d'un chiffre qui représenterait le nombre de secondes écoulées depuis le 1er janvier de l'an 1 et vérifier que ce chiffre tienne dans un double.
Le principe de calcul des dates est le même que pour les puissances : Il faut d'abord traiter l'extraction du plus gros chiffre = le siècle :
Soit X mon chiffre
Soit Y le nombre de secondes dans un siècle.
A:
Si X - Y > 0 alors
   Siècles = Siècles + 1
   X = X - Y
   Reboucle en A:

Quand cette boucle sera terminée, il suffira d'en faire une autre avec les années :
Soit X mon chiffre (diminué des siècles du dessus)
Soit Y le nombre de secondes dans un an
B:
Si X - Y > 0 alors
   Années = Années + 1
   X = X - Y
   Reboucle en B:

et ainsi de suite

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022
14 mai 2009 à 15:22
Merci pour la rapidité de vos réponses ! J'ai vb au taf mais je ne l'utilise pas, j'ai quand meme testé ton code Renfield, ça tue, rien à dire !!!!!!!! Merci...

Ce soir je vais essayer de voir, Jack, ce que tu as dis, et je mettrais aussi le code que j'avais fait, à titre d'info uniquement puisque... c'est surclassé là, mdr !

Bon, je retourne bosser, Merci encore !!

A pluch' !
0
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022
14 mai 2009 à 15:24
Hm, pour l'intéret, c'est juste pour délirer, cela dit ça peut etre utiliser comme... une appli orienté histoire pour des élèves qui sait? Acitiver une machine à remonter le temps c'est toujours plus marrant que de feuilleter un bouquin !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 mai 2009 à 15:31
en passant, le 789 a été choisit au hasard ^^ juste pour que la valeur n'évolue pas simplement de 10 en 10 ^^
0
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022
14 mai 2009 à 15:37
vivivi, j'ai remplacer les 789 par 1, j'ai vu que la vitesse variait... :), si j'ai le temps je vais emprunter VB à mon collègue pour faire des essais, j'ai hate de revenir en 1986 pour aller voir des super films au ciné
0
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022
14 mai 2009 à 15:37
hm... et jouer au loto, évidement
0
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022
15 mai 2009 à 09:16
J'ai pas eu le temps encore de zieuter, des trucs urgent à faire, comme d'hab... j'ai mis ma source d'essai d'avant mon message :
http://vegetalain.free.fr/0.rar

Renfield, ta soluce est vraiment cool, mais j'arrive pas trop à la "parceliser" dans plusieurs label, hm, je vais me pencher sur celle de Jack on va bien voir... dans... la limite de temps que je trouverais, hihihi !h

Bonne zournée !
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
15 mai 2009 à 09:42
rar survollé...

Outils > Options > Déclaration des variables obligatoire

(très important)

ca ajouteras 'Option Explicit' en tête des nouveaux modules, forms, etc.

mois_Change.... interesses toi à MonthName

hrs = Format$(Time, "hh")
utilises la fonction Minute
inutile de passer par une string, c'est lourd (idem pour second, Hour, Day, Month et Year)


après, y'a beaucoup trop de code...

dnas le fond, une date, c'est un nombre de jour depuis le samedi 30 décembre 1899 à minuit)

? formatnumber(cdbl(TimeSerial(0,0,1)),7)
0,0000116

une seconde, représente donc, en gros 0.0000116
? .000011574074075*60*60*24
1,00000000008

a la limite, en incrémentant un double de 0.0000116, donc, tu y ajoutes une seconde. (possible aussi, comme l'indique notre ami d'utiliser DateAdd...
0
Rejoignez-nous