Recent

Author Topic: timed delay in lazarus/free pascal  (Read 14585 times)

hankm

  • Newbie
  • Posts: 1
timed delay in lazarus/free pascal
« on: September 22, 2014, 07:43:52 pm »
Does such a delay exist?
I have searched under wait, pause, delay to no avail.

taazz

  • Hero Member
  • *****
  • Posts: 5368
Re: timed delay in lazarus/free pascal
« Reply #1 on: September 22, 2014, 07:48:40 pm »
sure does its called sleep(MilisecondsToSleep).
Good judgement is the result of experience … Experience is the result of bad judgement.

OS : Windows 7 64 bit
Laz: Lazarus 1.4.4 FPC 2.6.4 i386-win32-win32/win64

tr_escape

  • Sr. Member
  • ****
  • Posts: 432
  • sector name toys | respect to spectre
    • Github:
Re: timed delay in lazarus/free pascal
« Reply #2 on: September 23, 2014, 07:28:21 am »
hello,

Code: [Select]
  procedure delay(sn : double);
  var
    t:double;
  begin
    t := now + (1.0/24.0/60.0/60.0)*sn;
    repeat
     application.ProcessMessages;
    until now>t;
  end;

also you can use this function for some special waitings...

Rails

  • Guest
Re: timed delay in lazarus/free pascal
« Reply #3 on: September 23, 2014, 12:27:44 pm »
There is Delay procedure in the Crt unit.

http://www.freepascal.org/docs-html/rtl/crt/delay.html 

AFAIK, the use of Sleep is preferred.


User137

  • Hero Member
  • *****
  • Posts: 1791
    • Nxpascal home
Re: timed delay in lazarus/free pascal
« Reply #4 on: September 23, 2014, 08:33:22 pm »
Code: [Select]
    repeat
     application.ProcessMessages;
    until now>t;
Just want to note that loop like this will max out 1 CPU core. It seemingly does nothing, but if you keep it on for longer time it can overheat laptops. Therefore i recommend sleep(1) inside

Code: [Select]
while now<t do begin
  sleep(1);
  application.ProcessMessages;
end;

edit: And not making it start in the first place if don't have to.
« Last Edit: September 23, 2014, 08:34:59 pm by User137 »

 

TinyPortal © 2005-2018