Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CALCUL DU TEMPS RESTANT


Information sur la source

Catégorie :Exécution Niveau : Initié Date de création : 28/06/2003 Date de mise à jour : 28/06/2003 16:06:21 Vu : 5 005

Note :
4,5 / 10 - par 2 personnes
4,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

Description

Cette source permet de calculer le temps qui reste a une action .
 

Source

  • 'Cette ligne est a ajouter dans les déclaracion
  • 'Soit pp est une progressbar
  • Private Declare Function GetTickCount Lib "kernel32" () As Long
  • dim aa,d,g,et
  • apres mettez ce code sans une Command par exemple:
  • For i = 1 To 100 ' ca cest le nombre de boucle
  • g = GetTickCount ' on récupere le temps
  • pp.Value = i
  • 'ICI VOUS METTEZ LE CODE A EFFECTUER
  • 'exemple :
  • open app.path & "\" & i & ".txt" for output
  • print #1,"ce que tu veux"
  • close #1
  • d = GetTickCount ' on récupere une seconde valeur du temps
  • aa = (d - g) * (100 - i) ' on effectue le premier calcul
  • et = (Right(aa, 4))
  • p = InStr(aa, et)
  • Label2.Caption = (Left(aa, p)) & " Secondes" 'on affiche le resultat
  • DoEvents
  • Next i
'Cette ligne est a ajouter dans les déclaracion
'Soit pp est une progressbar
Private Declare Function GetTickCount Lib "kernel32" () As Long
dim aa,d,g,et

apres mettez ce code sans une Command par exemple:

For i = 1 To 100 ' ca cest le nombre de boucle
    g = GetTickCount ' on récupere le temps
    pp.Value = i
    
    'ICI VOUS METTEZ LE CODE A EFFECTUER
    'exemple : 
                    open app.path & "\" & i & ".txt" for output
                     print #1,"ce que tu veux"
                     close #1
                     

   
    d = GetTickCount ' on récupere une seconde valeur du temps
    
    
    aa = (d - g) * (100 - i) ' on effectue le premier calcul
    et = (Right(aa, 4)) 
    
    p = InStr(aa, et)
     
    Label2.Caption = (Left(aa, p)) & "  Secondes" 'on affiche le resultat
     
    DoEvents
Next i 

Conclusion

Si vous avez des question ? Contactez moi
 

Commentaires et avis

signaler à un administrateur
Commentaire de Pulcocitron le 28/06/2003 14:41:34

Oui, c'est assez simple...
Mais bon, quand à la fiabilité, c'est autre chose ! La plupart du temps, ce code devrait quand même être fiable, du moins pour des opérations simples, mais là tu considère qu'elle ont toujours la même durée, c'est qui est loin d'être toujours la cas...
Pour calculer le temps restant, j'ai plutôt tendance à faire une moyenne, x actions on été affectuées en y secondes il me reste x' actions à executer donc le temps restants = x' * (y/x)
Là bien sur, il y encore des limites, notamment si l'ordinateur n'est plus aussi performant (parcequ'un autre programme a été lancé par exemple...), mais bon ça me semble plus juste...

De plus, tu as recours à une déclaration (GetTickCount),  je crois bien qu'il y existe une fonction équivalente directement dans vb (Time, je crois, mais sans certitude)...

As-tu testé ton code à minuit ? Si GetTickCount marche comme je le pense il se remet à 0 à minuit, donc tu obtiendrais une valeur négative du temps écoulé, ce qui devrait poser problème...
Si tel est le cas, il y a un moyen simple de résoudre le problème, si d<g, alors le temps écoulé est de (valeur max de GetTickCount juste avant la réinitialisation)-g + d

Je crois que c'est tout ;-)

signaler à un administrateur
Commentaire de SatanCorporation le 28/06/2003 16:05:33

Salut Pulcocitron
merci de ton commentaire
je voulais aussi t'eclircir la fonction GetTickCount
cette function renvoi en milli seconde le temps de louverture de windows.Donc a minuit mon code marchera
@+

signaler à un administrateur
Commentaire de BruNews le 28/06/2003 16:59:49 administrateur CS

GetTickCount retourne les millisecondes ecoulees depuis le lacement de Windows sur 32 bits non signes d'ou on peut calculer qu'il retourne a zero au bout de 49,7 jours. Hors le Long de VB est sur 31 bits + 1 bit de signe, ce qui donnera des resultats faux beaucoup plus vite.

signaler à un administrateur
Commentaire de Zeroc00l le 30/06/2003 18:50:57

Juste une petite condition à rajouter pour le coup  des 49.7 jours sans coupure du pc ( qui tiens du miracle s'il s'agit de windows !)

Pulcocitron : Il est possible de faire varier le temp restant bcp plus rapidement que l'on souhaite si l'on ne mesure le temps necessaire a l'execution dQUE pour les x dernieres actions.

La moyenne de temps est donc calculé grace a la vitesse d'execution actuelle
La rapidite de calcul qu'il y avait il y a deux minute avant de lancer un logiciel par exemple n'influencera plus le temps restant.

Chez SatanCorporation, x =1 il ne mesure qu'une action ! donc c'ets la meilleur precision que l'on peut souhaiter
Cependant cette mesure ne prend pas en compte le temps de calcul pour calculer le temps restant. Dans une boucle, la moindra commande a son importance.
a+

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,203 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.