【问题标题】:How to handle OnTimer event in Delphi XE2?如何在 Delphi XE2 中处理 OnTimer 事件?
【发布时间】:2013-01-23 05:27:52
【问题描述】:

我需要在每天上午 9 点显示一条消息说“嗨”。我需要计时器吗?我如何检查是否是上午 9 点。 OnTimer 事件运行的计时器间隔应该是多少?

procedure Form1.TimerTimer1(Sender: TObject);
begin
  ShowMessage("Hi");
end;

如果我在 24 小时后运行此事件,我担心它可能会超过上午 9 点并且不会触发。

【问题讨论】:

    标签: delphi delphi-xe2 delphi-2010


    【解决方案1】:

    除非你有其他正当理由,否则要容易得多

    • 编写一个显示消息并退出的简单应用程序
    • 使用 Windows 的任务调度器调度它运行

    【讨论】:

    • “没有找到搜索结果” - 当我输入“sched task”打开任务计划程序时出现此错误。如何解决?
    • @NareshKumar - 由于您已经将此标记为答案,我假设您找到了任务调度程序?
    • 当Conficker 病毒(或它的克隆)攻击您的客户端时——管理员禁用所有计划任务——然后呢?相信我,依靠任务管理器并不是一个好习惯——我的实践证实了这一点:)
    【解决方案2】:

    您可以为 Delphi 使用类似 CRON 的解决方案:http://www.cromis.net/blog/downloads/cron-scheduler/

    【讨论】:

    • 如果你这样做了,事实上,需要保持你的程序运行,使用类似 cron 的调度器就可以了。上面链接中的代码运行良好。
    • 是的,最好将其实现为服务
    【解决方案3】:

    正如我之前的回答者所说,有更好更简单的方法。假设您想以自己的方式在 Delphi 中执行此操作,那么是的,您需要一个计时器。需要的步骤是:

    1. 在表单上设置计时器;
    2. 将“间隔”属性设置为 1000(一秒)或更小。为了获得更高的精度,您可以将 interval 属性设置为 1,程序将每毫秒检查一次
    3. 为 OnTimer 编写处理程序:

      procedure Form1.TimerTimer1(Sender: TObject);
      var x:TDateTime
      begin
      x:=Now;
      if {the hour read is 9 and minute is 0} then
      ShowMessage("Hi");
      end;
      

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      相关资源
      最近更新 更多