Подскажите реализацию следуюшего алгоритма: нужно чтобы через определенный интервал (например 5-7 минут) последовательно запускались нужные приложения. Например, в 15:00 запустить калькулятор, а в 15:05 - IE. Это должно происходить автоматически. Также нужно, чтобы можно было время устанавливать вручную и выбирать интервал (например 5,10,20 мин и т.д.)
ну по таймеру и сдеди за временем в чём проблема -то?
Добавлено (18.03.03 20:41): либо юзай TTimer либо "ставь" таймер через SetTimer и в процедуре окна обрабатывай сообщение WM_TIMER либо в той же SetTimer можно определить ф-ию таймера...в хелпе всё есть
to Vit в твоей реализации надо тип переменной i брать довольно большого размера для избежания ошибки при переполнении так лучше и в case-е ничего не считается...
Код
... var i: Byte = 0; ... Inc(i); case i of 1: "запуск первой проги" 2: "запуск второй проги" 3: begin i := 0; "запуск третьей проги"; end; end;
Обычный Integer - до 2х миллиардов - т.е. даже если таймер поставить на самый маленький возможный интервал в 10 ms то его хватит на год... Ставить разрядность меньшую чем Integer не следует, так как процессор всё равно будет работать с Integer, а вот код из-за преобразований будет менее оптимальным. А так как автор хочет иметь интервал 5 минут, то переменной хватит на 19000 лет....
таймер же "тикает" приближённо каждые 55 миллисекунд ведь установка интервала таймера в меньшую величину ведь ничего не даст!?
Хрен его знает! Но меньше 10 миллисекунд точно не имеет значения, меньше 100 миллисекунд будет врать безбожно, а на более больших интервалах погрешность будет в перделах разумного. Впрочем топик не об этом.
Хрен его знает! Но меньше 10 миллисекунд точно не имеет значения, меньше 100 миллисекунд будет врать безбожно, а на более больших интервалах погрешность будет в перделах разумного. Впрочем топик не об этом.
Невыдержал, решил проверить... За 10 минут погрешность таймеров в 1 сек - менее 0.01% в 0.01 сек - менее 1%
procedure TForm1.Timer1Timer(Sender: TObject); begin T3 := GetTickCount; Mas[T1] := T3-T2; T2 := T3; Inc(T1, 1); if T1>999 then begin Timer1.Enabled := False; for T1 := 0 to 999 do Memo1.Lines.Add(IntToStr(Mas[T1])); end; end;