begin process at 2012 02 16 00:35:33
  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 [Catégorie modifiée .Net -> VBA] Appliquer un décalage automatique sur une date [ par pitipilot ] Bonjourà tous, voilà j'ai un problème car mes champs de ma BDD sont en heures UTC et j'aimerais que lors de mes requêtes via VBA, celles ci soit en he erreur Private Sub Text5_Change(Index As Integer) [ par Stephanie14400 ] bonsir je test un projet telecharger sur ce site et j ' ai une erreur sur cette ligne : Private Sub Text5_Change(Index As Integer) message: procedure Transformation ADO vb.NET en vb6 [ par tibo5 ] Bonjour, j'aimerai transformer ce code vb.NET en vb 6(je suis debutant),j'ai surtout un probléme avec les .State Merci de votre aide! Private Connec authentification à partir d'une base de données Access [ par Betoul ] salut,je besoin de savoir comment faire une authentification à partir d'une base de données Access, mon problème est que je ne connaitre pas comment p authentification à partir d'une base de données Access [ par Betoul ] salut,je besoin de savoir comment faire une authentification à partir d'une base de données Access, mon problème est que je ne connaitre pas comment p


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,577 sec (4)

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