如何定时?

topwjl 2007-12-17 09:11:13
我用DateTimePicker设定个时间,怎么能让它每到这个时间就执行某个操作呢?
请大虾赐教!
...全文
107 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gongqiang1 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 i_love_pc 的回复:]

C++Builder制作闹钟
http://www.newasp.net/tech/program/20818.html

C/C++ code
---- 大凡热恋中的网虫都曾经陷入下列的困境:约好女/男朋友晚七点半在老地方等,却在计算机面前一直爬行到深夜,等反映过来,朋友早已拂尘而去,又得几天的功夫去陪礼道歉。朋友何不按以下步骤做一简单的闹钟,让你安安心心上网,大大方方约会。你只要在上……
[/Quote]


能解释一下吗?
topwjl 2007-12-17
  • 打赏
  • 举报
回复
还是要设置定时检测啊。
看来是没别的办法了吧。
那就只好这么做了。
谢谢大家的回复!
揭帖
i_love_pc 2007-12-17
  • 打赏
  • 举报
回复
C++Builder制作闹钟
http://www.newasp.net/tech/program/20818.html

---- 大凡热恋中的网虫都曾经陷入下列的困境:约好女/男朋友晚七点半在老地方等,却在计算机面前一直爬行到深夜,等反映过来,朋友早已拂尘而去,又得几天的功夫去陪礼道歉。朋友何不按以下步骤做一简单的闹钟,让你安安心心上网,大大方方约会。你只要在上网的时候打开此应用程序,设置好约会时间(当然也可以是默认好的)即可。时间一到,音乐响起,快去约会吧。 

---- 本闹钟程序有以下组件组成:

序号 组件类型 组件名称 功能
1 Tlabel l_Clock_1 显示“输入日期”
2 TdateTimePicker dtp_Clock_1 选择日期
3 Tlabel l_Clock_2 显示“输入时间”
4 TdateTimePacker tdp_Clock_2 选择时间
5 TmediaPlayer mp_Clock 演奏音乐
6 Tbutton b_Clock_Open 重新打开
7 Ttimer t_Clock 定时检测
8 Tbutton b_Clock_Close 关闭应用程序

---- 说明:dtp_Clock_1 的Kind属性设置为dtkDate , dtp_Clock_2 的Kind属性设置为dtkTime,mp_Clock 的FileName属性设置为你主机上存在的任何mid、wav、avi文件。t_Clock 的Interval属性设置为10。

---- 事件说明如下:

①、 t_Clock的OnTimer :
{
//按时触发演示程序
struct date d;
struct time t;
AnsiString thour,tmin,tsec;
int dyear;
int dintyear;
int dmon,dday;
AnsiString tinthour,tintmin,tintsec;
AnsiString dintmon,dintday;
//取当天日期
getdate(&d);
dyear=d.da_year;
dday=d.da_day;
dmon=d.da_mon;
dintyear=StrToInt(dint.SubString(1,2));
dintmon=dint.SubString(4,2);
dintday=dint.SubString(7,2);
//取当时时间
gettime(&t);
thour=AnsiString(t.ti_hour);
tmin=AnsiString(t.ti_min);
//tsec=AnsiString(t.ti_sec);
//tint=AnsiString(DateTimePicker1- >Time);
tinthour=tint.SubString(10,2);
tintmin=tint.SubString(13,2);
//tintsec=tint.SubString(16,2);
//闹钟服务功能
if ((StrToInt(thour)==StrToInt(tinthour))&&
(StrToInt(tmin)==StrToInt(tintmin))
&&(StrToInt(AnsiString(dyear).SubString(3,2))
==dintyear)&&(StrToInt(dmon)==StrToInt(dintmon))
&&(StrToInt(dday)==StrToInt(dintday)))
{
dTimer- >Enabled=false;
MediaPlayer1- >Open();
MediaPlayer1- >Play();
}
}
②、 b_Clock_Open 的OnClick:
{
t_Clock- >Enabled=true;
}
③、 b_Clock_Close的OnClick
{
Application- >Terminate();
}

---- 当然此程序还可以拓展、细化,如我仅将触发条件检测到分,当然它完全可以检测到秒,也可以仅检测到时.
topwjl 2007-12-17
  • 打赏
  • 举报
回复
如果每隔一段时间就将现在的机器时间与设定的时间作比较,要求比较范围1分钟,如果相隔24小时,那要比较1440次,这种方法好像不大好
topwjl 2007-12-17
  • 打赏
  • 举报
回复
精度要求不高,1分钟之内是可以的,但是DateTimePicker可能会人为的随时改变,那就要一个相应的计算时差的算法,好像比较麻烦阿。
呵呵,我比较懒,有没有其他的简单的方法?
我不懂电脑 2007-12-17
  • 打赏
  • 举报
回复
精度不高的话TTimer完全可以。
可以取一个范围比较。
i_love_pc 2007-12-17
  • 打赏
  • 举报
回复
要求的精度是多少??
topwjl 2007-12-17
  • 打赏
  • 举报
回复
是啊,我就是考虑到时间比较可能会出问题,所以才想用别的
还有没有其他方法?
i_love_pc 2007-12-17
  • 打赏
  • 举报
回复
TTimer控件可以完成!

注意时间的比较问题和精度!

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧