PDA

Просмотр полной версии : [Помогите!] Выполнение программы через промежуток времени.


cooller1995
16.07.2012, 22:17
Здравствуйте, подскажите как сделать так что бы программный код выполнялся каждые 15минут-2часа(рандомно) но не более 30 раз в сутки.
И возможно ли такое вообще?

VeTaL_UA
17.07.2012, 12:57
Sleep + Условие на колличество выполнений

simsonbart1
17.07.2012, 18:49
А можно и гораздо проще на форму таймер кинуть

VeTaL_UA
17.07.2012, 21:44
Я про цикл забыл написать...

Sinyss
17.07.2012, 22:51
А можно и гораздо проще на форму таймер кинуть
А вот это я считаю *****-методом....
Зачем использовать визуальные компоненты если есть встроенные классы, которые намного проще и очевидней вызвать в коде, чем на форме и потом отслеживать что-куда-и-почему...

simsonbart1
18.07.2012, 00:56
А вот это я считаю *****-методом....
Зачем использовать визуальные компоненты если есть встроенные классы, которые намного проще и очевидней вызвать в коде, чем на форме и потом отслеживать что-куда-и-почему...

Ну низнаю каждому нравится по своему на мой вид зачем писать весь этот громоздкий код когда одним таймером можно отделаться

Sinyss
18.07.2012, 01:30
Ну низнаю каждому нравится по своему на мой вид зачем писать весь этот громоздкий код когда одним таймером можно отделаться
А представь что у тебя кода не 10 строчек, а 10к, таймер может использоваться в 100 местах(допустим) писал ты этот код допустим 3 месяца назад и тут тебе надо что то поправить...
Итого, мы имеем:
1) 100 таймеров на форме, какой из них отвечает за то что тебе надо поправить - неизвестно.
2) 10к строк кода, каждая из которых может менять состояние таймера от того что есть в граф. элементе.
3) Ты не имеешь понятия в какой последовательности выполняется твой код, потому что писал его хз когда...
Ты не знаешь, к чему приведет изменение этого кода(может он связан с кодом в других местах).

PS: Этот "громоздкий код" занимает 2-3 строчки но упрощает твою жизнь значительно. И 10к строчек для нормального проекта это очень мало....

cooller1995
18.07.2012, 10:46
одним таймером однозначно не отделаться..
а вот:
Sleep + Условие на колличество выполнений
вполне подходит, только подскажите пожалуйста как задать это самое условие.

VeTaL_UA
18.07.2012, 12:04
Давай начнём с рандома. Чтобы вывести рандомное число между 15 минутами (900000мс) и 2 часами (7200000мс) можно заюзать такой код:
var
s:integer;
begin
s:=900000+random(6300001);
end;
Почему 6300001? Да потому что 7200000-900000=6300000, а функция random(a) выбирает число от 0 до a-1.

Дальше делаем цикл со sleep:
var
i:integer;
begin
for i:=0 to 29 do
begin
{тут код программы}
Sleep(900000+random(6300001));
end;
end;
29 потому что 30-1-29.