IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

timer et boucle


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Par défaut timer et boucle
    Bonjour à tous,
    j'ai un petit problème avec les timers.
    en fait j'ai implémenté le programme suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    private j as integer
    Private intetr as integer
    Private sub myfunction()
      j  = 1
      For i = 1 to N 'N est un grand nombre soit disant 300
        'beaucoup de traitement
        intetr = 0
        Log "boucle For = " & i
        mtmrTimer.enabled = True
      Next
    End sub
     
    Private Sub mtmrTimer_Timer()
      'traitement
      intetr = intetr + (mtmrTimer.Interval / 1000)
      If intetr >= 3 Then
        log "boucle Timer = " & j
        j = j +1
      End If
    End sub
    le résultat que j'aperçoit dans mon fichier de log est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    boucle For = 1
    boucle For = 2
    ...
    boucle For = 300
     
    boucle Timer = 127
    boucle Timer = 126
    ...
    boucle Timer = 1
    donc le timer ne s'exécute pas sur toutes les boucles !!
    est ce que quelqu'un peut m'expliquer ce phénomène
    Merci d'avance.

  2. #2
    Membre émérite Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 635
    Par défaut
    Met un DoEvents dans ta boucle pour forcer VB6 à lacher la main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    private j as integer
    Private intetr as integer
    Private sub myfunction()
      j  = 1
      For i = 1 to N 'N est un grand nombre soit disant 300
        'beaucoup de traitement
        intetr = 0
        Log "boucle For = " & i
        DoEvents  '*****************************************
        mtmrTimer.enabled = True
      Next
    End sub
     
    Private Sub mtmrTimer_Timer()
      'traitement
      intetr = intetr + (mtmrTimer.Interval / 1000)
      If intetr >= 3 Then
        log "boucle Timer = " & j
        j = j +1
      End If
    End sub

  3. #3
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Par défaut
    ça sera pas plus approprié de mettre le Doevents après l'appel du timer ??

  4. #4
    Membre émérite Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 635
    Par défaut
    Ton instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mtmrTimer.enabled = True
    ne sert qu'une fois (elle pourrait être avant la boucle FOR)

    Une fois le timer Enabled, il le reste tant que personne ne le met à False

    Chat marche ou pas le DoEvents ?

  5. #5
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 11
    Par défaut
    oui ça marche mais comme meme j'ai eux questions:

    1. ça sert à quoi exactement ce que j'ai ajouté

    2. comment tu peux expliquer le fichier de log ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    boucle For = 1
    boucle For = 2
    ...
    boucle For = 97
     
    boucle Timer = 300
    boucle Timer = 299
    ...
    boucle Timer = 164
     
    boucle For = 96
    boucle For = 97
    ...
    boucle For = 200
     
    ect ...
    Merci

  6. #6
    Membre émérite Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 635
    Par défaut
    Citation Envoyé par ferarkan Voir le message
    ça sert à quoi exactement ce que j'ai ajouté
    DoEvents, en gros, suspend ton programme en cours pour laisser à Windows voir si il n'y a pas d'autres choses à faire ... et ensuite, il reprend ton programme (regarde l'aide MSDN )

    comment tu peux expliquer le fichier de log ??
    je n'explique pas.
    Ton programme de tempo est curieux . Tu attends un certain nombre de tempo avant de déclencher le LOG et ensuite, tu LOG à chaque tempo ... Ce qui peut expliquer la rafale

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Timer et boucle
    Par stracoma dans le forum VB.NET
    Réponses: 28
    Dernier message: 26/12/2014, 12h01
  2. choix entre timer et boucle tantque
    Par phil_niv dans le forum Général Python
    Réponses: 1
    Dernier message: 10/10/2008, 13h16
  3. [AJAX] AJAX, timer et boucle while
    Par podidoo dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/03/2007, 20h36
  4. Réponses: 4
    Dernier message: 08/02/2006, 08h31
  5. [VB6] Problème contrôle Timer et boucle For-Next ...
    Par Stéphane BEHMENBURG dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 01/12/2005, 17h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo