Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.01 c
1-98058
3asys
2002-09-19 11:51
2002.09.30
Как из clipboard-а сохранить текст в файл?


1-98168
Svin
2002-09-17 08:40
2002.09.30
StringGrid ????


1-98150
Алексей Ким
2002-09-17 15:22
2002.09.30
WideString


1-98069
3asys
2002-09-19 13:03
2002.09.30
Организация последовательности операций


1-98113
kefirilla
2002-09-20 09:21
2002.09.30
С чем едят ТChart





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский