我想根据系统时间,每隔一段时间就计算数据;例如系统时间现在是11:02,我以5分钟为计算周期,那么应该是11:00到11:05计算一次,11:10计算一次,11:15计算一次.....而不是11:02到11:07计算该怎么做呢?

解决方案 »

  1.   

    uses DateUtils;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      if MinuteOf(Time) mod 5 = 0 then
        { TODO };
    end;
      

  2.   

    uses DateUtils;var iOldDoTime: Integer;
    procedure TForm1.Timer1Timer(Sender: TObject);
    var I: integer;
    begin
      I := MinuteOf(Time);
      if (i mod 5 = 0)) and (i <> iOldDoTime) then //保证同一分钟不会重复执行
      begin
         iOldDoTime := i;
        { TODO };
      end;
    end;
      

  3.   

    if (i mod 5 = 0) and (i <> iOldDoTime) then //保证同一分钟不会重复执行
      

  4.   

    楼上的代码加上把Timer的interval设为300000就ok了
      

  5.   

    说另外一个办法,在程序开始时看看系统时间,然后将Timer的启动时间设为时间差,这样Timer就会准时启动,然后在第一次事件时把Timer时间改为你要的值比如五分钟。
      

  6.   

    同意zswangII(伴水清清)(一贴不灌,何以灌天下?) (的
      

  7.   

    aiirii(ari-爱的眼睛)思维更严密
      

  8.   

    明显这个叫qiluping的倒分嫌疑~~
      

  9.   

    , 感觉倒分,记录观察>>看了一下,不太明白,为什么不把记时器设置位每一分钟触发一次~~
    同意,设成61秒更保险