用Timer实现定时运行

王朝delphi·作者佚名  2006-01-09
宽屏版  字体: |||超大  

定时运行这个问题其实老早就接触到了,不过在上次的程序中似乎没有很好的解决这个问题,并且没有深入下去。这次再次碰到同样的问题,在查找了网上的资料以后,对这一问题有了比较深的理解。在程序中实现定时运行的思路:

由timer控件实现

两个timer控件,其中timer1负责每一分钟检查一次系统时间和设定时间的差值,如果两者相差5分钟,则继续检查,直到当相差时间小于5分钟,触发timer2,timer2的定时器时间就是这个时间间隔。当timer2到时以后,就触发主程序。具体代码

procedure TForm1.Button1Click(Sender: TObject);

begin

timer1.Interval:=60*1000; //启动监控,每1分钟检查一次设定时间和当前时间

timer1.Enabled:=true;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

var

l_time: TDateTime;

h_time: TDateTime;

ss:Int64;

begin

timer1.enabled:=false;

h_time:= strtotime('10:30:00');

l_Time := time; //now是取当前的日期加时间,time只取当前时间

if (h_time>l_time) then begin

ss:=SecondsBetween(h_time,l_time); //求两个时间相差多少秒

if ss<5*60 then begin //如果时间间隔小于5分钟定时启动timer2

timer1.Enabled:=false;

showmessage('Inteval seconds:'+inttostr(ss));

timer2.Interval:=ss*1000;

timer2.Enabled:=true;

end;

end

else

timer1.enabled:=true;

end;

procedure TForm1.Timer2Timer(Sender: TObject);

begin

timer2.enable:=false;

showmessage('ok on time run the program');

// start...

timer1.Enabled:=true; //再次开始监控

end;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有