begin process at 2008 05 16 07:06:22
1 173 219 membres
61 nouveaux aujourd'hui
13 970 membres club

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 !

Sujet : Delay(1000); ne functione pas? [ Mutimédia / Autre ] (Delphiturbo)

Delay(1000); ne functione pas? le 02/05/2008 15:48:27

Delphiturbo
Salut

je voudrais faire un Click et une pause de 1seconde :

SetCursorPos(left+50, top+50);
Delay(200); // error ici !

Mais je dois mettere la Function de Delay oubien ?!
Je ne voudrais pas utiliser "Sleep()". Il bloque le programm
je cherche la Function de Delay



Re : Delay(1000); ne functione pas? le 02/05/2008 16:22:30

Caribensila
Membre Club
Réponse acceptée !
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;


Utilisation :  Pause(1000)  => 1 seconde

Re : Delay(1000); ne functione pas? le 02/05/2008 16:38:16

cirec
Membre Club
(Admin CS)
Réponse acceptée !
Salut,

il y aussi cela  de Nebula et correction de Cam91 :
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;

 
@+
Cirec


Re : Delay(1000); ne functione pas? le 02/05/2008 17:20:07

Caribensila
Membre Club
Réponse acceptée !
Il y a aussi ça, pour de trèèèèspetits 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;

Utilisation :

var Freq : int64;
...
QueryPerformanceFrequency (Freq);
Pause3(Freq); // => 1 seconde.

PS: Tu nous le traduis en assembleur, Cirec?  Moi, je ne connais pas :(

Re : Delay(1000); ne functione pas? le 04/05/2008 13:14:00

Delphiturbo
les 3 Fuctions sont ok :)

merci bien


Classé sous : function, delay, functione

Participer à cet échange

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS