Есть ли готовая возможность или легкий (в смысле для нагрузки проца и памяти) способ, чтобы поймать событие в момент времени (например 13:42:34)?
Дергать каждую секунду таймер и проверять системное время, как-то не красиво.
Модератор: Модераторы
function TimeToMillisec(t:TDateTime):integer;
begin
result:=1000*(strtoint(FormatDateTime('ss',t))+(60*strtoint(FormatDateTime('mm',t)))+(60*60*strtoint(FormatDateTime('hh',t))));
end;
function TimerInterval(start_time:string):integer;
begin
result:=TimeToMillisec(StrToTime(start_time))-TimeToMillisec(Time);
if TimeToMillisec(Time) >= TimeToMillisec(StrToTime(start_time)) then result:= (60*60*60*1000)+(TimeToMillisec(StrToTime(start_time))-TimeToMillisec(Time));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Interval:=0;
Timer1.Enabled:=True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var start_time:string = '10:48:53';
begin
Timer1.Interval:=TimerInterval(start_time);
Timer1.Enabled:=True;
end;
60*strtoint(FormatDateTime('mm',t
GAMER писал(а):2Sharfik. Если вы о sleep(), то этот вариант в даном случае мне не подходит. А вот приведенный пример в самый раз, только я его подправил немного под себя.
GAMER писал(а):Кстати, нужно будет проверить поведение таймера, если тело таймера выполняется дольше, чем интервал.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 220