Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];
ВнизСобытие в определенные моменты времени Найти похожие ветки
← →
0_o (2006-09-30 20:09) [0]Бодрого времени суток, Мастера.
Требуется вызывать событие в определенные моменты времени...
Пытался сделать через OnTimer типа:
if Time in MyTimes then ShowMessage("Ура!") ...
но вся соль в том, что не могу сделать MyTimes = set of TTime; и думаю врядли у мну это получится =), делать через массив (пробегать каждую секунду по не факт что маленькому массиву времен и сравнивать: if Time = TimesArry[i]) не хочется - думаю тормозить будет нехило...
Подскажите, plz, как можно это реализовать попроще и для системы и для меня =)
← →
Desdechado © (2006-09-30 20:17) [1]Например, при задании какого-то времени срабатывания создавать таймер, у которого интервал срабатывания равен "Нужное время"-"время сейчас" и запускать его.
Сколько времен, столько таймеров. Каждому можно назначить свое событие (действие).
ЗЫ не уверен, что самый лучший, до легко реализуемый вариант.
← →
default © (2006-09-30 20:18) [2]как у Вас эти моменты времени определяются?
← →
default © (2006-09-30 20:47) [3]храни в массиве приращения времени в миллисекундах, держи глобальную переменную с текущим числом срабатываний события
и в таймере что-то типа
Timer1.Interval := DeltaTimes[EventCount];
Inc(EventCount);
и дальше код по отработке события в зависимости от номера его возникновения(если такая зависимость есть, иначе просто код обработки)
← →
Сергей М. © (2006-09-30 20:53) [4]
> Требуется вызывать событие
События не "вызываются", они возникают (или происходят).
Например, событие "сигнал таймера" (TTimer.OnTimer) возникает через равные промежутки времени.
← →
0_o (2006-09-30 22:29) [5]
> default © (30.09.06 20:18) [2]
>
> как у Вас эти моменты времени определяются?
Хм... есть список с часами:минутами...
> События не "вызываются", они возникают (или происходят).
> Сергей М. © (30.09.06 20:53) [4]
> > Требуется вызывать событие
> События не "вызываются", они возникают (или происходят).
>
Ок, требутся совершить действие/вызвать процедуру/etc
← →
default © (2006-09-30 22:32) [6]0_o (30.09.06 22:29) [5]
см [3], вполне простой, понятный и рабочий вариант
← →
default © (2006-09-30 22:51) [7]ну, например, мне надо чтобы событие сработало
в 13, 12 и в 16 часов текущего дня
берём часы в порядке возрастания: 12, 13, 16
допустим сейчас 10 часов того же дня,
тогда ставлю Timer1.Interval := (12-10)*60*60*1000;
когда таймер сработает ставим (13-12)*60*60*1000; и выполняем обработку
в следующее срабатывание таймера ставим (16-13)*60*60*1000;
и тд
в программный код нету сложности перевести
← →
0_o (2006-10-01 11:54) [8]Ок, большое спасибо!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c