Delphiturbo
Messages postés68Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention29 juillet 2008
-
2 mai 2008 à 15:48
Delphiturbo
Messages postés68Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention29 juillet 2008
-
4 mai 2008 à 13:14
Salut
je voudrais faire un Click et une pause de 1seconde :
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 2 mai 2008 à 16:22
Bonjour,
procedure Pause(Laps : Cardinal);
var Deb,fin : Cardinal;
begin
Deb := gettickcount;
Fin := deb + Laps;
while Fin>Deb do begin
Deb := gettickcount;
Application.ProcessMessages
end;
end;
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 2 mai 2008 à 16:38
Salut,
il y aussi cela de Nebula et correction de Cam91 :
[codes/SLEEP-NON-BLOQUANT_12719.aspx Voir ici]
procedure TForm1.Pause2(t: DWORD);
asm
push esi
push edi
mov esi,edx
call GetTickCount
add esi,eax
mov edi,Application
@attente:
push 1
call sleep
mov eax,edi //ou rien (selon version)
call TApplication.ProcessMessages //où call [edi].TApplication.ProcessMessages
call GetTickCount
cmp esi,eax
jae @attente
pop edi
pop esi
end;
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 2 mai 2008 à 17:20
Il y a aussi ça, pour de trèèèès
petits
intervals de temps. Particulièrement utile dans les Threads, où Sleep() donne automatiquement la main à un autre Thread...
procedure Pause3(Laps : int64);
var Deb,fin : int64;
begin
QueryPerformanceCounter(deb);
Fin := deb + Laps;
while Fin>Deb do begin
QueryPerformanceCounter(deb);
Application.ProcessMessages; //Facultatif dans un Thread.
end;
end;