delphi延时 4种方法

来源:互联网 发布:mac打开文件夹新窗口 编辑:程序博客网 时间:2024/06/05 11:48
 
  1. /////////////////挂起,不占CPU
  2. sleep
  3. //////////////////不挂起,占cpu
  4. procedure Delay(msecs:integer);
  5. var
  6. FirstTickCount:longint;
  7. begin
  8. FirstTickCount:=GetTickCount;
  9. repeat
  10. Application.ProcessMessages;
  11. until ((GetTickCount-FirstTickCount) >= Longint(msecs));
  12. end;
  13. ////////////////////////////////////////// 定时器
  14. procedure timerfun(handle:Thandle;msg:word;identer:word;dwtime:longword);stdcall;
  15. begin
  16. showmessage('到点了');
  17. killtimer(handle,identer);//关闭定时器
  18. end;
  19. //其中的identer是定时器的句柄
  20. procedure TForm1.Button1Click(Sender: TObject);
  21. var
  22. identer:integer;
  23. begin
  24.    identer:=settimer(0,0,2000,@timerfun);
  25.    if identer=0 then exit; //定时器没有创建成功。
  26. end;
  27. ////////////////////////////////////////////////// 不占CPU不挂起
  28. function TForm1.HaveSigned(MaxWaitTime: Cardinal): Boolean;
  29. var   I:Integer;
  30. var   WaitedTime:Cardinal;
  31. begin
  32.           WaitedTime:=0;
  33.           while      (WaitedTime<MaxWaitTime)   do
  34.           begin
  35.                   SleepEx(100,False);
  36.                   Inc(WaitedTime,100);
  37.                   Application.ProcessMessages ;
  38.           end
  39. end;