![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Свой "Планировщик задач" [D7]
Novichok_New © (2007-02-21 21:27:00)На примере кода, "выдернутого" из исходника (найденого в Nete), хотел обсудить вопрос создания своего "планировщика задач":
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer3.Enabled:=True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
StatusBar1.Panels[1].Text:=TimeTostr(Time);
end;
procedure TForm1.Timer3Timer(Sender: TObject);
var
Reg: TRegIniFile; Dir,S:string;
begin
if Edit1.Text=StatusBar1.Panels[1].Text
then begin
//выполняем действие
end;
end;
Даже новичку понятно, что это решение неудачное!
Что Вы можете посоветовать взамен этого?
Novichok_New (2007-02-22 08:13:00) [1]Благодарю всех за идеи!
RASkov (2007-02-21 22:20:00) [2]:)
Т.е. в [11]
Самому смешно от того, что предложил...
RASkov (2007-02-21 22:18:00) [3]> [8] Novichok_New © (21.02.07 21:50)
Все тоже самое, только ближе ко времени сробатывания более чаще проверять, примерный алгоритм в [9]
Virgo_Style (2007-02-21 22:01:00) [4]первая фантазия, какая пришла в голову - посчитать время следующего срабатывания и выставить таймер на половину (три четверти, золотое сечение...) этого времени, по срабатыванию таймера повторять до некоторого предела, затем перейти на (к примеру) посекундный отсчет (или вообще в цикле проверять), когда время перевалит через заветную отметку - сделать, что надо.
Sam Stone (2007-02-21 22:00:00) [5]DecMinute(Время_Запуска)< Now < IncMinute(Время_Запуска)
Virgo_Style (2007-02-21 21:58:00) [6]Novichok_New © (21.02.07 21:41) [4]
да и само решение похоже на почесать левое ухо правой рукой из-под мышки
Novichok_New (2007-02-21 21:50:00) [7]Хе!
А если:
Задано - 23.59.59?
:-)
Шутки - шутками, а решение (в принципе) неплохое...
RASkov (2007-02-21 21:45:00) [8]> [5] Novichok_New © (21.02.07 21:44)
if Time>=StrToTime(Edit1.Text) then....
Novichok_New (2007-02-21 21:44:00) [9]Поймать момент, когда
12.10.00 = 12.10.00
- вот главная задача!
Пока у меня идея только реализовать:
12.09.00 < Now < 12.11.00
RASkov (2007-02-21 21:44:00) [10]Сработает.... хотя зависит от программы. Как будешь ловить момент срабатывания, если как в[3] то да, может и пропустить...
Novichok_New (2007-02-21 21:41:00) [11]Как мне объяснили - в случае большой загруженности процессора в момент, когда программа должна сработать, возможно она не сработает вообще!
RASkov (2007-02-21 21:40:00) [12]> [2] Novichok_New © (21.02.07 21:37)
if Time=StrToTime(Edit1.Text) then....
Если полностью расписывать, это надолго.... ты начни и если, что не получится спрашивай...
>Что Вы можете посоветовать взамен этого?
Вариантов много...
Novichok_New (2007-02-21 21:37:00) [13]
> Решение чего ?
Решение запуска определённой задачи по расписанию (в определённое время)!
Fay (2007-02-21 21:31:00) [14]2 Novichok_New © (21.02.07 21:27)
> Даже новичку понятно, что это решение неудачное!
Решение чего ?