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 :

[VB6]Bug dont je ne vois pas la cause.


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut [VB6]Bug dont je ne vois pas la cause.
    Bonjour à tous.

    j'ai une procédure avec une progressbar qui fonctionne avec le temps:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim heure as date
    heure=time
    progressbar1.max=text1.text*60
    do
    '... code executé
    progressbar1.value=datediff("s",heure,time)
    loop until datediff("n",heure,time)>=text1.text
    mais la barre de progression s'arrètte toujours aux deux tiers, je ne sait pas pourquoi.

    merci

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Hé ! Méphisto ... tu t'es réveillé ?
    Déjà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    progressbar1.max=text1.text*60
    progressbar1.max est une valeur, de type integer
    text1.text est de type string
    text1.text * 60 n'est pas cohérent
    Qu'est-ce-que tu nous fais là ?

    bis repetita ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    loop until datediff("n",heure,time)>=text1.text
    EDIT : VB s'en sortira quand même si Text1.text = un nombre (il en souffrira, mais...)
    Mais ce n'est pas tout : mets donc 10 dans ta textbox et lance le programme, pour voir... (mais attention : ne le fais qu'avec, en tout et pour tout sur ta form qu'une textbox et un commandbutton dans l'événement click duquel tu places ton code...)
    avec un tel procédé, tu es à la totale merci d'une faute de frappe. un 0 de plus, ou un chiffre mal considéré, et voilà ton appli partie pour une boucle qui promet d'être assez longue et sans possibilité (non prévue) de l'interrompre... que l'utilisateur frappe 100 et... bonjour les dégâts...

  3. #3
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    tu devrais savoir que je ne ferais pas une déilité pareille sans m'en aperçevoir.

    si tu veux savoir, le code avant ressemble à ça en résumé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not isnumeric(text1.text) or int(text1.text)<>text1.text then exit sub
    donc ça vien pas de là.
    sinon, la saisie de l'utilisateur peut aller de 1 à 999999999, tout est controlé, mais là, je ne vois pas l'origine du bug.
    si c'était un bug du genreque tu décrit, j'aurais un message d'erreur.
    là, je n'ai rien.
    la procédure se finit au bout des deux tiers de la progressbar, comme si
    datediff("s",heure,time)<>datediff("n",heure,time)*60 lorsque datediff("n",heure,time) est un entier...

    salut

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    En dehors de ce que je t'ai dit,ta progressBar va chez moi jusqu'au bout...
    mets 1 dans ta textbox (ce sera ainsi plus court) et vois..

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Ca y est Méphisto : je vois le problème :
    sinon, la saisie de l'utilisateur peut aller de 1 à 999999999, tout est controlé, mais là, je ne vois pas l'origine du bug
    Plus ce que tu mets dans textbox est grand, plus tu as de chances de passer par..... Minuit... (=0h.00)

  6. #6
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    oui, mais ça me fait ce bug avec 1,2,3 ext...
    pas encore testé avec 999999999

  7. #7
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    comprends pas, je suis arrivé à tester jusqu'à 5 (après ce serait trop "paralysant" pour moi) sans aucun problème : tout va jusqu'au bout !

    T'aurais pas un problème d'occupation de la mémoire ? (ça m'est arrivé aujourd'hui en voulant tester une fonction "ouvrevue" (ou quelquechose comme ça) d'un autre sujet (je crois que le titre était ouverture conditionnelle de forms)

  8. #8
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    vais refaire une phase de tests, ça ce trouve, ça vien d'autre chose. je te donnerais la solution demain.

    salut et merci.

  9. #9
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Voilà, j'ai fini par trouver la cause, même si je ne vois pas comment cela se fesait que ça marche chez toi (ou alors, hazard incroyable?)

    en fait, le problème vien du fait que datediff ("n", heure, time) ne fera aucunes différences si heure = 18:59:00 ou 18:59:59.
    il ne fait donc que la différence des chiffres des minutes ce qui n'est pas vraiment préçis.

    j'ai donc résolu le problème en metant tout en foncction de la seconde et en remplaçant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    loop until datediff("n",heure,time)>=text1.text
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    loop until int(datediff("s",heure,time)/60)>=text1.text
    voilà.


    merçi.
    bonne programation

  10. #10
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Le hasard est simple : lancer dans une bonne fourchette horaire .... (plus de 50 % de chances)

  11. #11
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    non, pour que tu tombe juste, si tu l'a vérifié jusqu'au bout, il faut que tu l'ai lancé à s=00 soit une chance de 1/60. c'est peu probable.


    salut

  12. #12
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Bon! j'ai voulu relancer, pour voir à quel point j'étais chanceux et ai découvert que je le suis souvent ! (je vais acheter un billet de loto).
    Je me suis aussi amusé à changer l'heure de l'ordinnateur, pour voir...
    Essaye par exemple une heure ##:30 : aucun souci. Essaye ensuite avec ##:56 ===>> plantage.

  13. #13
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    je ne parle pas d'un plantage mais d'une procédure qui ne marche pas corectement.

    normalement, à ## 01, il te manque un soissantième de ta barre au moment ou il s'arrète.


    salut

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

Discussions similaires

  1. loadvar et onload, là je vois pas pourquoi ça bug!
    Par pierrickg dans le forum ActionScript 1 & ActionScript 2
    Réponses: 5
    Dernier message: 23/08/2009, 12h59
  2. [VB6] Bug d'une appli (ou "Impossible n'est pas français")
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 09/06/2006, 12h45
  3. [UML] Je ne vois pas où mettre la vue !
    Par le Daoud dans le forum MVC
    Réponses: 12
    Dernier message: 19/03/2006, 09h31
  4. utiliser des classes dont on n'a pas le source
    Par kocin dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 28/08/2004, 16h05
  5. [VB6] [Validate et CausesValidation] Ca marche pas toujours !!!
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 16/12/2003, 22h09

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