Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

FAIRE UNE PAUSE DE ** SECONDES OU MILLISECONDES SANS "PERDRE LA MAIN"


Information sur la source

Catégorie :API Niveau : Débutant Date de création : 02/11/2002 Date de mise à jour : 02/11/2002 13:40:38 Vu : 5 255

Note :
9,5 / 10 - par 6 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note


Description

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

  • 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}
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...
 

Commentaires et avis

signaler à un administrateur
Commentaire de fabiin le 02/11/2002 12:12:09

repeat... until n'a pas besoin de begin et end ;)

signaler à un administrateur
Commentaire de hvb le 02/11/2002 13:42:40

je sais pas trop quand il faut, et quand il ne faut pas les mettres (srutout que avec, et sans, ca passe), enfin en tout cas pour cet exemple, j'ai mis a jour, et je les ai enlevés. merci fabiin

signaler à un administrateur
Commentaire de Delphiprog le 02/11/2002 17:50:15 administrateur CS

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

signaler à un administrateur
Commentaire de hvb le 03/11/2002 02:00:42

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.

signaler à un administrateur
Commentaire de hvb le 03/11/2002 02:01:38

et merci pr la precision pr le begin..end, Delphiprog .

signaler à un administrateur
Commentaire de Smortex le 09/11/2002 22:01:13

- 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...

signaler à un administrateur
Commentaire de murphy2712 le 28/06/2005 09:53:10

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

=> lol !

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,30 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.