读书人

时间循环定时解决方案

发布时间: 2013-11-15 22:28:15 作者: rapoo

时间循环定时
请教个很菜的问题
我做个定时工具,里面有循环功能,从某个时间点开始隔设定的时间循环提示
例如从10点整开始,每隔50分钟循环提示一次,在Timer里查询

#include <DateUtils.hpp>
TDateTime oldtime;
String sTime = "10:00:00"; //从10点开始循环
int nloop = 50 * 60; //50分钟循环一次
oldtime = Now().DateString + " " + sTime;
int nsec = SecondsBetween(Now(),oldtime); //距现在多少秒
if( (nloop - nsec % nloop) == 0 )
{
//执行提示
}

//上面这代码在设定相隔30分钟以内是可以的,但超过30分钟就不行了,请教!!!!
[解决办法]
试试这样看行不行:

#include <DateUtils.hpp>
TDateTime oldtime;
String sTime = "10:00:00"; //从10点开始循环
int nloop = 50 * 60; //50分钟循环一次
bool tt=false;
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if(tt==true){
// 执行你的语句


}
oldtime = Now().FormatString("yyyy-mm-dd") + " " + sTime;
int nsec = SecondsBetween(Now().FormatString("yyyy-mm-dd hh:nn:ss"),oldtime);
tt=true;
Timer1->Interval=(nsec-floor(nsec/nloop)*nloop)*1000;
}

[解决办法]
if( (nloop - nsec % nloop) == 0 )改为

if(nsec%nloop==0)


上面的变量写错了
[解决办法]
从某个时间到了,启动定时器
这可以用两个定时器实现。也可以用线程实现。

读书人网 >C++ Builder

热点推荐