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