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

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    août 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : août 2016
    Messages : 2
    Points : 1
    Points
    1

    Par défaut Introduction d'un délai entre 2 print

    Bonjour,

    Je suis relativement novice en vb6, et je n'arrive pas à comprendre le déroulement de la portion de programme suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Command1_Click()
      Dim i As Long
      Print "Allumé"
      For i = 1 To 1000000000
      Next i
      Print "Eteint"
    End Sub
    En effet, au lieu d'imprimer allumé, puis après le délai, imprimer éteint, le programme attend le délai, puis imprime d'un seul coup:

    Allumé
    éteint

    Quelqu'un peut-il m'expliquer ?

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 831
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 831
    Points : 10 841
    Points
    10 841

    Par défaut

    Salut

    La demande d'affichage du mot Allumé n'est pas effectivement exécutè avant l'entrée dans la boucle qui occupe le processeur, l'affichage est fait donc à la sortie de cette boucle juste avant le print Eteint.

    Pour avoir l'affichage Allumé, tout de suite après le print, il faut forcer l'affichage avec un Me.Refresh., et j'ajouterai un Doevents() pour laisser du temps au autre processus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Command1_Click()
      Dim i As Long
      Print "Allumé"
      Me.Refresh
      For i = 1 To 1000000000
        Doevents()
      Next i
      Print "Eteint"
    End Sub
    ProgElecT
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  3. #3
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 831
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 831
    Points : 10 841
    Points
    10 841

    Par défaut

    Un bout de code permettant de temporiser plus précisément.
    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
    Function Retard(Tempo As Single)
    Dim Fin As Single
    Fin = Timer + Tempo
    Do While Timer < Fin
        DoEvents
    Loop
    End Function
     
    Private Sub Command1_Click()
      Dim i As Long
      Print "Allumé"
      Me.Refresh
      Retard 4.25  'soit 4 Secondes 25 centième
      Print "Eteint"
    End Sub
    ProgElecT
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    août 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : août 2016
    Messages : 2
    Points : 1
    Points
    1

    Par défaut Résultats mitigés

    Bonsoir,

    Merci à ProgElecT pour sa réponse rapide. Je trouve le comportement de visual basic assez bizarre finalement
    En Fait, il ne fait pas ce qui est écrit (ou du moins pas dans l'ordre). J'ai essayé la solution du Me.refresh,
    et j'ai bien le "eteint" qui s'affiche après le délai, mais le allumé n'apparait jamais
    J'ai également essayé avec un chargement et un déchargement d'image, avec le même bout de code, et là ça marche. Pourquoi ?

  5. #5
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    juillet 2009
    Messages
    2 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2009
    Messages : 2 207
    Points : 5 174
    Points
    5 174

    Par défaut

    Citation Envoyé par robertandre67 Voir le message
    .....et j'ai bien le "eteint" qui s'affiche après le délai, mais le allumé n'apparaît jamais....
    N'y a-t-il pas un Cls juste avant l'appel de Retard 4.25 ?
    Le mot Eteint s'affiche où : 1ère ou 2ème ligne ?
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA)
    Vous pouvez consulter mes contributions
    Consultez les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  6. #6
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 831
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 831
    Points : 10 841
    Points
    10 841

    Par défaut

    Salut

    l_autodidacte

    @robertandre67, regardes aussi la propriété AutoRedraw elle conditionne le moment de l'affichage effectif, elle existe pour le Form entier mais aussi par exemple pour le contrôle PictureBox
    ProgElecT
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

Discussions similaires

  1. Calcul de délai entre deux dates
    Par bouchoc dans le forum DB2
    Réponses: 3
    Dernier message: 28/05/2010, 14h04
  2. Délai entre 2 actions
    Par lekev62 dans le forum VBScript
    Réponses: 2
    Dernier message: 09/07/2009, 14h01
  3. Réponses: 2
    Dernier message: 27/05/2008, 11h20
  4. calcul délais entre deux dates avec plages horaires
    Par leila eco dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 03/01/2007, 16h51

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