可以你加个定时器。
timer1if timetostr(now)='24:00:00' then
begin
 dosomething;
end;

解决方案 »

  1.   

    对了,你说只执行一次
    刚才 没明白你的意思,呵呵
    定义一个全局变量
    var
    runed: boolean;
    procedure TfmMain.Timer1Timer(Sender: TObject);
    var Hour1, Min1, Sec1, MSec1: Word;
      Hour2, Min2, Sec2, MSec2: Word;
    begin
      DeCodeTime(DateTimePicker1.Time, Hour1, Min1, Sec1, MSec1);
      DeCodeTime(Time, Hour2, Min2, Sec2, MSec2);
      if (not Runed) and(Hour1 = Hour2) and (Min1 = Min2) then
      begin
        // Exec...  
        Runed:=True;
      end;
      if formatdatetime('hh:nn:ss')='00:00:00' then 
         Runed:=False;
    end;
    这样就搞定了,呵呵
      

  2.   

    个人感觉,应是在限定一个时间范围。
    比如:
    if hour=23 and minute>45 and minute<59 then
      begin 
        {Run your Programme here}
      end;之所以这样是考虑到这样的一种情况:
    在你限定的某一个精确的时间里如果有一个非常高优先级的线程在执行的话,在错过了你所指定的时间点以后,今天就恐怕再也没有机会去执行了。
    呵呵,小弟对于线程什么的不懂,只是要了一些书。说错了不要笑我呀。
      

  3.   

    要是我就隔一个小时测试一次今天有没有做这个工作,没有做就做,做了就skip,呵呵:)