首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

时间循环定时解决方案

2013-11-15 
时间循环定时请教个很菜的问题我做个定时工具,里面有循环功能,从某个时间点开始隔设定的时间循环提示例如

时间循环定时
请教个很菜的问题
我做个定时工具,里面有循环功能,从某个时间点开始隔设定的时间循环提示
例如从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)


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

热点排行