如何在零点执行调用函数???(100分)

  • 主题发起人 主题发起人 terryhigh
  • 开始时间 开始时间
T

terryhigh

Unregistered / Unconfirmed
GUEST, unregistred user!
在WIN32动态库中,每当零点时刻,调用函数对缓冲区做一次清空操作。//操作函数已有
请问如何实现???最好有相关例子说明!!!
如果使用TIMER,每隔24小时实行一次,但不知道用户何时加载库???
如果先取得系统时间,在判断差值,那第二次就不能实现了???
 
请你把你的问题描述得更清楚一些, 要人家帮助你, 必须说清除你的问题在哪里.
我猜想你的问题是: 如何确定从23:59:59-->00:00:00这一时间变化过程, 是吗?
这很简单: 使用Timer, 1秒钟(或者1分钟,分辨率具体由你自己定,)执行一次, 查询当前系统时间, 如果发现小时突然从大变到小, 就表示日期改变了:
if new_hour < old_hour then
....就是新的一天了....
 
不是的,我就是想在每一天的零点执行一个函数
 
零点下载考勤机的数据吗?用天河流星的方法就可以
 
天河流星的方法???
是什么方法???能详细介绍一下吗?
 
to 天河流星 : 那只要判断FormatDateTime('hh:mm:ss',now)='00:00:00'不就可以了吗?
 
我可以定义一个TIMER,每隔一秒检测一下系统时间,如果是零点就执行清空函数
但会不会对系统效率有很大的影响啊?
有没有别的好方法啊???
 
要么把你要执行的东西分离出来一个单独的程序,利用WINDOWS系统的计划任务,每天零时运行一次,只要电脑正常运行就可以。
 
对系统效率影响不大的,每秒只执行了一次判断,几乎没什么影响。
 
to moshengren2000:
办法很多, 你的办法也能通, 但不合适, 因为:
从系统获取的时间信息都是数值(小时是整数), 直接比较整数大小是计算机中最快的算法;
而你要先将整数转化成字符串(效率底了20倍以上), 再比较字符串(效率又底了30倍以上), 效率底了100倍不止, 程序员要做的工作是了解计算机(工具), 了解事务(要解决的问题),
用好工具解决好问题...
 
to 天河流星 : 受教了,谢谢
 
to 天河流星 :请赐教!!!谢谢!!!
 
定义一个TIMER,每隔一秒检测一下系统时间,如果是零点就执行清空函数
此方案被否决了,请大家给指点个好方法,急等???
 
其实timer挺好的,简单明了,但是没有必要1秒,可以在临界区定成1秒,其他时间1分钟就可以了
 
最好是有一个定时的事件,到零点就触发
 
先取得系统时间,判断差值,
TIMER.ontimer时设置为24小时
 
那就这样办:
1.先取的系统时间和零点的差值
2.设置时钟1,settimer(差值,proc);
3.在proc里调用清空函数,再设置时钟2,settimer(24小时,procnew);
KILLTIMER(时钟1);//能否做到???,也就是让时钟1只执行一次???
4.最后procnew里调用清空函数。
请大家看看有没有问题???
 
用Windows API 函数,之前答过了:
CreateWaitableTimer()
OpenWaitableTimer()
SetWaitableTimer()
CancelWaitableTimer()
具体用法请再查一下相关联机帮助
 
todo
s1234:首先非常感谢你的两次回答!!!
我试过MSDN一个例子,问题是:在我的程序中(WIN32动态库)不认这几个函数???(已包含WINBASE.H)
其次:当我第一次得到当前系统时间与零点差值后,SETWAITTIME(这段时间)。
那第二次怎么办???很迷惑???请帮忙指点!!!问题解决再加100分(我只有这些分了)
 
采用定时器,然后要判断FormatDateTime('hh:mm:ss',now)='00:00:00' 不就可以了吗?
 
后退
顶部