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 :

temporisateur sous VB6


Sujet :

VB 6 et antérieur

  1. #1
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 60
    Par défaut
    bonsoir à tous

    je cherche à créer un temporisateur pour une application sous VB6. le problème est que je ne peux pas utiliser un timer vue que sa durée maximale est de l'ordre de qq dizaines de secondes alors que j'ai besoin d'un temporisateur de 5 minutes.

    est ce que l'un de vous aurait une idée là dessus.
    merci d'avance

    A+

    juste pour information, j'ai déjà essayer avec un compteur (j'incrémente une variable) mais ça m'a causée des bugs.

    A+

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Par défaut
    B'soir,

    voir Timer, la fonction et non le contrôle :

    Code MSDN : 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
    Timer, fonction, exemple
    Cet exemple utilise la fonction Timer pour mettre l'application sur pause. Cet exemple utilise également la fonction DoEvents pour donner le contrôle à d'autres processus pendant la pause. 
     
    Dim PauseTime, Start, Finish, TotalTime
    If (MsgBox("Cliquez sur Oui pour effectuer une pause de 5 secondes", 4)) = vbYes Then
       PauseTime = 5   ' Définit la durée.
       Start = Timer   ' Définit l'heure de début.
       Do While Timer < Start + PauseTime
          DoEvents   ' Donne le contrôle à d'autres processus.
       Loop
       Finish = Timer   ' Définit l'heure de fin.
       TotalTime = Finish - Start   ' Calcule la durée totale.
       MsgBox "Pause de " & TotalTime & " seconde(s)"
    Else
       End
    End If

    EDIT : c'est vrai qu'on a vu ça y'a pas longtemps...

  4. #4
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 60
    Par défaut
    merci bien

  5. #5
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Tout ce qui est écrit, même dans la MSDN, n'est pas parole d'évangile.

    La réponse a déjà été fourni moulte fois - celui qui va lire cette réponse sera induit en erreur
    car cette solution est mangeuse de ressources (CPU à 100%) ;
    de plus, une pause n'a pas le comportement d'un controle timer.

    Pour un timer long voir l'api settimer qui travaille sur un long.
    pour une pause, voir Sleep.

    Tout ceci se trouve déjà dans les réponses du forum.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 94
    Par défaut
    Bonjour,

    Bien que résolu, je pense qu'il y a un moyen très simple (un peu bêbête mais qui n'utilise pas le proc à 100%).

    Créer un Label avec un Caption de "0" et un Timer avec un intervale de 10 sec.
    A chaque tour du Timer, incrémenter le Caption du Label de + 10 (Label = val(Label) +10.
    Avec un Private Sub Label_Change regarder lorsque le Caption est à 300 (ou supérieur) et si oui, arrêter le Timer et se brancher dans la tâche désirée.
    Si ça peut aider ...

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, MarcVB6

    1) Le timer a une propriété tag (pourquoi donc un label ?)
    2) les variables statiques existent également et sont là pour çà...
    3) rien n'empêche d'utiliser une comparaison d'heures dans la procédure du timer ...

    Etc...
    Les solutions ne manquent pas ! Cele d'un label complémentaire alourdit inutilement...

  8. #8
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Juste une pîqure de rappel dans l'esprit du 3ème post :
    le forum est un outil (initialement à destination de professionnels) qui n'a pas vocation à être pollué par des réponses approximatives
    ou des usines à gaz ayant pour objet de réinventer la roue.

    Pourquoi ?
    Outre les explications fournies dans le lien ci-dessus, quand un post comme celui là se trouve dans un résultat de recherche,
    c'est celui qui sera lu prioritairement du fait du nombre de réponses si bien que le lecteur débutant utilisera une méthode approximative
    alors qu'une réponse technique se trouve dans les résultats de recherche.
    C'est l'une des raisons majeures justifiant la modération des forums et la nécessité d'utiliser prioritairement la fonction de recherche avant de poster.

  9. #9
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 60
    Par défaut
    Citation Envoyé par DarkVader Voir le message
    Tout ce qui est écrit, même dans la MSDN, n'est pas parole d'évangile.

    La réponse a déjà été fourni moulte fois - celui qui va lire cette réponse sera induit en erreur
    car cette solution est mangeuse de ressources (CPU à 100%) ;
    de plus, une pause n'a pas le comportement d'un controle timer.

    Pour un timer long voir l'api settimer qui travaille sur un long.
    pour une pause, voir Sleep.

    Tout ceci se trouve déjà dans les réponses du forum.
    bonjour à tous

    merci DarkVader pour ta remarque. tu as tout à fait raison, en utilisant la fonction existante sous msdn j'ai une pause alors que ce n'est pas mon objectif. quand j'avais posté j'avais pas vérifié le résultat à 100%.

    merci pour toutes vos propositions.

    a+

  10. #10
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 60
    Par défaut
    Citation Envoyé par DarkVader Voir le message
    Juste une pîqure de rappel dans l'esprit du 3ème post :
    le forum est un outil (initialement à destination de professionnels) qui n'a pas vocation à être pollué par des réponses approximatives
    ou des usines à gaz ayant pour objet de réinventer la roue.

    Pourquoi ?
    Outre les explications fournies dans le lien ci-dessus, quand un post comme celui là se trouve dans un résultat de recherche,
    c'est celui qui sera lu prioritairement du fait du nombre de réponses si bien que le lecteur débutant utilisera une méthode approximative
    alors qu'une réponse technique se trouve dans les résultats de recherche.
    C'est l'une des raisons majeures justifiant la modération des forums et la nécessité d'utiliser prioritairement la fonction de recherche avant de poster.
    merci pour le coup de pouce concernant les API et SetTimer. ça marche

    a+

  11. #11
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 60
    Par défaut Avis aux intéressés
    Il y a un exemple très simple sur le suport d'aide de microsoft
    http://support.microsoft.com/kb/180736/fr

    A+

  12. #12
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 60
    Par défaut
    Bonjour à tous,

    bien que le sujet soit résolu, il existe encore un point qui m'intrigue lors de mon éxécution. En fait, en se basant sur l'exemple fourni sur le site d'aide de microsoft, choississant la variable icounter.
    J'effectue un test: si icounter atteind une valeur donnée alors je redémarre la temporisation sinon je continue à l'incrémenter.
    Le hic est que pour une même valeur, j'obtient des durées différentes (vérification avec un chronomètre). Par exemple, si je fixe valeur donnée= 1500, et bien certaines fois cette valeur correspond à 5min et d'autres fois à 1min voir moins. Est ce que l'un de vous aurait une idée??

    merci d'avance

  13. #13
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    je vais donc dire ici, avec le maximum de timidité, ce qui échappe souvent à beaucoup ...
    La solution universelle n'existe pas.
    Il n'y a que des solutions adaptées au déroulement d'une application.
    Il arrive que le mieux soit l'ennemi du bien.
    Si tel n'était pas le cas, l'on ne trouverait pas, sur le marché, des outils spéciaux permettant de répérer où naissent certaines lenteurs, retard, etc..., en analysant ligne par ligne.
    Les méthodes à adopter pour optimiser la vitesse de telle application peuvent dans certains cas être diamétralement opposées à celles à adopter dans une autre application.
    Il y aurait trop (beaucoup trop) à dire à ce propos et une vingtaine de pages ne suffiraient pas.

    l'optimisation est le maître mot et son approche n'est pas mécanique, loin de là !

    Amitiés.

    EDIT : je voudrais vous faire partager le lien suivant
    http://LIEN SUPPRIME PAR MOI A MON CORPS DEFENDANT
    En précisant qu'il est très loin de tout traiter.
    Son rédacteur, toutefois, dit et expose des choses essentielles...
    C'est en Anglais, je sais...

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

Discussions similaires

  1. [VB6] Comment Lancer un fichier externe sous vb6 ??
    Par Barred dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/05/2006, 20h35
  2. word et datagrid sous vb6
    Par azzouz_soui dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 01/10/2005, 00h18
  3. ajouter des control dans une onglet de sstab sous VB6
    Par aymane_farissi dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/09/2005, 14h44
  4. Direct8X/Direct3D sous VB6, probleme de récup d'animations
    Par John Blobsmith dans le forum DirectX
    Réponses: 3
    Dernier message: 28/04/2004, 11h32
  5. [vb6] Modifier structure table Access sous VB6
    Par jlvalentin dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 25/03/2004, 18h45

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