cs_didine13
Messages postés96Date d'inscriptionmardi 18 août 2009StatutMembreDernière intervention14 août 2013
-
21 juil. 2010 à 13:34
scromania
Messages postés452Date d'inscriptiondimanche 20 août 2006StatutMembreDernière intervention11 janvier 2013
-
21 juil. 2010 à 16:05
Bonjour,
Je voulais savoir s’il existe un autre moyen de remplacer le for
For i = 0 to 25000
Avant que le code ce d’éclanche je lance une fenêtre s’ouvre "VEUILLEZ PATIENTEZ..." cette fenêtre fige devient blanche et des fois le programme plante.
Après quelque recherche sur http://www.vbfrance.com j'ai découvert qu'il faut ajouter un DoEvents,
Cela est vrais que le programme est super stable je peux même bouger ma fenêtre "VEUILLEZ PATIENTEZ...", mais le problème est que au lieu de 11 secondes pour que le programme fini de s'exécuter il mais 3 minute 35 (si il ne ce plante pas lol).
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 21 juil. 2010 à 15:35
tout un tas d'events systeme + les actions de l'utilisateur sur ton interface, etc.
vont générer des messages a destination de ton application, afin que celle-ci réagisse, (VB6 s'en sert pour incoquer les evenements de tes controles)
un DoEvents permet de forcer ton programme à gerer ces messages.
du coup ca induit quelques traitements supplémentaires.
d'un autre coté, si ces messages patientent trop longtemps dans la file des messages (longue boucle sans DoEvents), windows s'apercoit que ton programme ne les traite pas, il la marque comme ne répondant pas. (la fenetre devient blanche, etc.)
du coup, il faut faire les choses raisonnablement :
- mettre la fenetre en inactive, pour éviter que des clicks declenchent des evenements parasites
- mettre des Doevents dans la boucle afin de traiter les massage
mais pas un DoEvents a chaque tour de boucle, non...
soyons fins :
For i = 0 to 25000
If (i and &hFF)= 0 Then
DoEvents
End If
...
Next
Ainsi, un Doevents sera invoqué toutes les 256 iterations...
lesdis
Messages postés403Date d'inscriptionmercredi 19 avril 2006StatutMembreDernière intervention 7 août 2020 21 juil. 2010 à 13:59
Bonjour,
Tu veux faire patientez l'utilisateur pour quoi?
Si tu veux juste le faire poiroter pour le plaisir, utilise un timer.
Sinon, c'est que tu as du traitement de code à faire et le temps d'exécution ne peux pas être modifié, cela dépend des capacités de la machine. A toi de faire le code le plus optimisé possible pour réduire le temps d'exécution du code
cs_didine13
Messages postés96Date d'inscriptionmardi 18 août 2009StatutMembreDernière intervention14 août 2013 21 juil. 2010 à 14:06
Bonjour,
Comment ca pour quoi ?
Ben c'est pour attendre la fin de l'exécution comme dans n'importe quel autre programme.
Faire poiroter pour le plaisir: Non
Utilise un timer pour : pour quoi faire
J'ai téléchargé quelque exemple sur le site et j'ai remarqué que le Do While et plus utiliser que le for.
Mais je ne sais pas si c'est possible de convertir mon for -> Do While.
Je suis vraiment débutant dans les boucles.
Merci