Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.30;
Скачать: CL | DM;

Вниз

Помогите с переходом даты   Найти похожие ветки 

 
cher_gvf ©   (2002-09-18 17:10) [0]

Допустим,мне нужно запускать процесс в период с 22:35 до 2:10 с частотой 1 раз в 2 минуты.Как мне контролировать переход даты ночью если мне нужно отображать полную дату запуска?
Вот как я пытаюсь:

N:=0; //счетчик для итераций
if (Time < sc.script_finish) then
if (Time > sc.script_start) then // старт уже был СЕГОДНЯ
while (Time-(sc.script_start+N*sc.script_rate)) >= sc.script_rate do Inc(N)
else
if (Time < sc.script_start) then // старт скана был ВЧЕРА
begin
while (Time+1+(1-sc.script_start)) - (sc.script_start+N*sc.script_rate) >= sc.script_rate do Inc(N); // полагая что 24 часа =1.0
end;

// 1. Без учета перехода даты
if ((sc.script_start < sc.script_finish) and ((sc.script_start+(N+1)*sc.script_rate) <= sc.script_finish))
then // для уже не"сегодняшних" сканов
begin
if ((sc.script_start+(N+1)*sc.script_rate) <= next_time)
then next_time:=(sc.script_start+(N+1)*sc.script_rate); //время след.запуска
end;

// 2. С учетом перехода даты
if (sc.script_start > sc.script_finish) then
begin
if ((sc.script_start+(N+1)*sc.script_rate) > next_time)
then next_date := IncDay(next_date,1);
next_time:=(sc.script_start+(N+1)*sc.script_rate);
end;

помогите,плиз, нужно очень


 
Канадин Владимир   (2002-09-18 17:29) [1]

Надо использовать TDateTime(это Double, в целой части которого содержится день, в дробной - время). Перед стартом цикла задаешь время старта ControlTime, вычисляешь интервал времени между событиями Delta и в процедуре таймера пишешь
Timer1Timer(Sender : TObject);
begin
if now>ControlTime then begin
ControlTime:=ControlTime+Delta;
Необходимые действия;
end;
end;


 
Separator ©   (2002-09-18 21:10) [2]

а не проще так:

var
DateNow: TDateTime;
procedure TForm1.Form1Activate(Sender: TObject);
begin
...
//Запускаем процесс
DateNow:= Now; //Полна дата момента запуска
...
with Timer1 do
begin
Interval:= 120000;
Enabled:= true
end
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled:= false;
...
//Запускаем процесс
DateNow:= Now; //Полна дата момента запуска
...
with Timer1 do
begin
Interval:= 120000;
Enabled:= true
end
end;



Страницы: 1 вся ветка

Текущий архив: 2002.09.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
4-98414
anod
2002-08-13 12:28
2002.09.30
КАк установить высоту окна


8-98227
DSilence
2002-03-13 18:32
2002.09.30
Компонент загрузки JPEG,GIF,PNG,TIFF,PCX,BMP файлов


1-98140
Sam Stone
2002-09-15 12:04
2002.09.30
декомпилятор


14-98351
billybons
2002-09-03 10:20
2002.09.30
сетевой прикол


4-98398
Леван
2002-08-14 11:59
2002.09.30
Как изменения в registry вступают в силу?