begin process at 2010 02 10 14:56:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

General

 > 

temps


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

temps

samedi 9 septembre 2006 à 05:18:59 | temps

hhhp2004


hhhp2004

salut,

mettez le code suivant dans un form et dites moi svp pourquoi time1 negale pas time2 (time1 est en millisecondes, time2 est en secondes ... donc quand time1=1000 time2=1) ... si vous mettez sleep(1) les 2 time ne nauront pas la meme valeur ex. time1=800 ms, time2 = 1 s .... si vous mettez sleep(1000) les 2 time seront egaux ...

mettez sur le form 2 timers, 1 commandbutton et 2 label

Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Dim time As Long 'time in miliseconds

Dim time2 As Long


Private Sub timeLoop()

 Do
 
  DoEvents
 
  Call Sleep(1)
 
  time = time + 1
 
 Loop

End Sub

Private Sub Command1_Click()
 
 Timer1.Interval = 1
 Timer2.Interval = 1000
 Call timeLoop

End Sub

Private Sub Timer1_Timer()

 Label1.Caption = time

End Sub

Private Sub Timer2_Timer()

 time2 = time2 + 1
 
 Label2.Caption = time2

End Sub

merci beaucoup

samedi 9 septembre 2006 à 06:42:35 | Re : temps

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
C'est dû tout simplement à la longueur d'éxécution des instructions : un Sleep(1) est censé duré 1 ms, mais en réalité, il dure : le temps de l'appel de la fonction (environ 16 ms il me semble), puis le temps d'éxécution de la fonction, et enfin, la ms de pause !
Idem pour les timers : même si on peut mettre un interval de 1 ms, ils ne sont pas aussi précis et neu peuvent pas se déclancher toutes les millisecondes !

Il s'agit d'une question récurrente qui revient de temps en temps sur le forum, tu aurais cherché un peu avant de demander, tu aurais trouver ta réponse plus rapidement.


samedi 9 septembre 2006 à 11:37:56 | Re : temps

PCPT

Administrateur CodeS-SourceS
salut
pour sleep je ne sais pas le temps réel (calculable sur demande, mais forcément un peu variable selon les PC)
pour timer c'est 18ms min

ce test serait plus juste comme suit MAIS il sera forcément de plus en plus faussé dans la durée
(le doevents prend un temps variable sur chaque PC, etc....)

Option Explicit 

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long
Dim lTime1 As Long  'time in miliseconds
Dim lTime2 As Long 

Private Sub Command1_Click() 
    Timer1.Interval = 10 
    Timer2.Interval = 100 
    
Call timeLoop 
End Sub 
Private Sub timeLoop() 
    
Do 
        
DoEvents 
        
Call Sleep(100) 
        lTime1 = lTime1 + 1 
    
Loop 
End Sub 

Private Sub Timer1_Timer() 
    Label1.Caption = lTime1 
End Sub 

Private Sub Timer2_Timer() 
    lTime2 = lTime2 + 1 
    Label2.Caption = lTime2 
End Sub


Coloration syntaxique automatique [AFCK]
       

++
PCPT  [AFCK]

Prenez un instant pour répondre à ce sondage svp
samedi 9 septembre 2006 à 20:47:36 | Re : temps

hhhp2004



hhhp2004

salut et merci davoir repondu...

Dapres vous, est quil y aurait moyen de dexecuter quelque chose toutes les 1 milisecondes (precis)

Tout ca cest parce que je veux faire un moteur de jeu ... et dans ce moteur il faut le temps ... non?

merci encore
samedi 9 septembre 2006 à 21:07:54 | Re : temps

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
toutes les millisecondes ? Tu n'as pas l'impression que ca fait très très court comme intervale et que ca risque bouffer toutes les ressources du proc ?

Pour obtenir un temps, le mieux c'est de travailler non pas sur un intervale de 1 ms et de compter le nombre de millisecondes comme cà (car cà bouffe tout les cycles de processeur !), mais de calculer l'intervale de temps (avec la fonction de l'API GetTickCount par exemple) entre deux temps régulier : par exemple, pour chaque frame de ton jeu affichée à l'écran, tu récupère le nombre de ms écoulées depuis la dernière frame affiché, ca évite ainsi de devoir calculer le nombre de ms entre chaque image affichée ! Il serait même bien plus efficace de le faire toutes les 10 ou 15 frames affichées si tu veux optimiser le traitement !



dimanche 10 septembre 2006 à 04:45:38 | Re : temps

PCPT

Administrateur CodeS-SourceS
salut,
moteur de jeu... tout dépend. je rejoins DarkSidious sur le principe mais tout dépend ta demande.

timer à 1ms c'est possible avec les API MIDI.
regarde dans mes sources (TIMER OCX) et lit les commentaires, tu y trouveras peut-être des pistes intéressantes.

NB : un intervalle ci court, réfléchi bien aux besoins réels. çà consomme vraiment énormément de ressources (100%?!!!)
++

Prenez un instant pour répondre à ce sondage svp


Cette discussion est classée dans : private, time, sleep, time2, time1


Répondre à ce message

Sujets en rapport avec ce message

Timer [ par tony ] Private Sub form_load()timer.Interval = 1000timer.Enabled = trueEnd SubPrivate Timer_Time()Label1.caption = timeEnd Sub'Malheureusement avec cette mét pb "Type incompatible" [ par dam94 ] J'ai écrit cette ligne : time2(i) = CSng(time(i))time2() est un singletime() est un stringPourquoi est ce qu'il m'ouvre cette erreur de type incompati type incompatible [ par dam94 ] Bonjour,Je voudrais savoir qu'set-ce que Mid et Left renvoie comme valeur.Est ce que j'ai le droit d'utiliser ces valeurs dans CSng ?Moi j'ai time2(i) Tempo C sous DOS en miliseconde? [ par pcman5 ] Voila, j'utilise le compilateur QuickC sous DOS et je cherche a faire une temporisation en miliseconde. La fonction Sleep n'existant pas. (En tous cas demande d'aide [ par simoxxx ] bonjour ,je suis entrain de créer une macro qui va comparer deux tableaux dans une feuille excel j'ai écrit ce code pour afficher le résultat de la co Configuration réseau d'un windows XP [ par Gwen38 ] Bonjour Je cherche actuellement à créé un script pour configurer un machine XP grace à une appli en Visual Basic. Mais j'ai un problème avec la config Pb redirection stdout dans VB d'un script SHELL ( via cygwin ) [ par elegardien ] Bonjour,J'ai mixé le code d'un lancement externe d'application via VB auquel j'ia ajouté une redirection de la sortie standar du lancement externe ver ADODC & VB 6 & Access 2000 & combobox choissisant la table à utiliser [ par 8_mm ] Bonjour,Mon problème actuel est que j'ai créé un form dans le quel on entre de nouvelle donnée pour ma bdd... Le soucis est que je travail (ou du moin Enregistrement d'une dll sur windows xp avec un compte utilisateur n'ayant pas de droit [ par vaneri2004 ] Bonjour tout le monde,Je me creuse la tête depuis quelques temps pour trouver le moyen d'enregistrer une dll sur un chti Windows Xp avec un compte uti definir date time et recupérer leurs valeurs [ par youlel ] bonjour,je cherche comment définir la date et l'heure et comment recupérer la date actuelle du systeme et la comparer avec une date déja définit.merci


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,357 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales