Faire une pause de ** secondes ou millisecondes sans "perdre la main"

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 324 fois - Téléchargée 39 fois


Contenu du snippet

Bon bah j'ai aussi mis ce code sur vbfrance (en vb quand meme lol...) parcque moi ca me sert assez souvent.
Et vous me direz surement "oui il y a sleep() pour faire une pause", mais sleep perd la main, vous ne pouvez pas quitter ni deplacer la feuille, contrairement à ces fonctions.

Source / Exemple :


function hbwait_ms(ms : integer) : integer;
var
hbms : integer;
begin
 hbms := GetTickCount + ms;
 repeat
 Application.ProcessMessages;
 until GetTickCount >= hbms
 end;

 function hbwait_sc(sc : integer) : integer;
var
hbsc : integer;
begin
 hbsc := GetTickCount + (sc * 1000);
repeat
 Application.ProcessMessages;
  until GetTickCount >= hbsc
 end;

{On appelera ensuite la fonction comme tel : }
hbwait_sc(5); {Fait une pause de 5 secondes}
hbwait_ms(2000); {Fait une pause de 2500 millisecondes}

Conclusion :


c'est simple, mais ca peut toujours servir...

A voir également

Ajouter un commentaire Commentaires
Messages postés
7
Date d'inscription
lundi 27 juin 2005
Statut
Membre
Dernière intervention
29 juillet 2005

hbwait_ms(2000); {Fait une pause de 2500 millisecondes}

=> lol !
Messages postés
2
Date d'inscription
mardi 22 octobre 2002
Statut
Membre
Dernière intervention
31 janvier 2003

- Quel est l'intéret de faire des fonctions quand on ne renvoie pas de résultat ?
Utiliser function au lieu de procédure ca fait plus bô ?
- Remplace les Integer par des Cardinal (Sauf si tu est fan des avertissements dans la fenêtre de résultat).

Sinon, l'application et quand même partiellement bloqué car on ne peut pas la fermer pendant qu'on attends... Le mieux selon moi est d'utiliser un thread...
Messages postés
939
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
27 janvier 2009
2
et merci pr la precision pr le begin..end, Delphiprog .
Messages postés
939
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
27 janvier 2009
2
en fait ca m'a surtout servi quand je fesais des petites appli vb utilisant winsock ou encore qq jeux... et cela va aussi me servir en delphi je pense.
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Je ne saisis pas bien l'intérêt, à part de déplacer une fiche pendant que l'application ne fait rien ! En fait, Application.ProcessMessages redonne la main au système pour qu'il puisse traiter les messages en attente. C'est un héritage du temps de Windows 3, quand le multitâche était coopératif. Autrement dit, c'était au bon vouloir de l'application de rendre la main à Windows pour ne pas bloquer les autres tâches en cours.
Je ne remets pas en cause l'utilité de cette méthode, mais elle doit utilisée en toute connaissance de cause (et surtout d'effets).
Il est bien plus utile que l'application puisse réagir pendant que des tâches parallèles s'effectuent (Threads).

Quant au couple Begin..End, il sert à délimiter un bloc d'instruction. Certaines instructions incorporent ces délimiteurs : case..end, repeat..until, try..finally..end, try..except..end
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.