Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2011, 16:45   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию Инкремент (Увеличение) даты на день вперёд

Доброго всем времени!

Пишу планировщик...
Есть некая галочка "Повторять бесконечно".

юзер вводит дату и время..
Далее происходит проверка, все совпало/прошло(время), но событие надо повторить. А значит нужно изменить дату на день вперёд.

Как увеличеть дату на день вперёд?

Последний раз редактировалось mihali4; 28.10.2011 в 01:27.
Человек_Борща вне форума Ответить с цитированием
Старый 27.10.2011, 16:59   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Единичку прибавить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.10.2011, 18:10   #3
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Или IncDay (модуль DateUtils).
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 27.10.2011, 22:37   #4
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Может стоит не проверять дату, если стоит такая галочка? Просто время сверять.
TwiX вне форума Ответить с цитированием
Старый 29.10.2011, 15:57   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

TwiX, не задумывался =) Но спасибо. Попробую.
По поводу сабжа, есть функции: Yesterday и Tomorrow. Они более удобные.

Но ситуация:
Код:
procedure TApp.DoShedulerCheckEnd(Sender: TObject);
var
  iD, iT: SmallInt; //iDATE, iTime
  i: Integer;
begin
  if AppInfo.ActiveTask then
  begin
    for i := 0 to Sheduler.Count - 1 do
    begin
        if Sheduler.Tasks[i].Active then
        begin
          iT := CompareTime(Now, Sheduler.Tasks[i].Time);
          iD := CompareDate(Now, Sheduler.Tasks[i].Date);
          if ((iT = 0) or (iT = 1) and (iD = 0)) then
          begin
            case Sheduler.Tasks[i].Action of
              saStart: Start;
              saStop: Stop;
              saRestart: Restart;
            end;

           if Sheduler.Tasks[i].CycleTask then
           begin
            Sheduler.Tasks[i].Date:=Tomorrow;
           end;
          end;
        end;
      end;
  end;
end;
Стандартный tTimer работает с запаздыванием...
По этому условие:
Код:
if ((iT = 0) or (iT = 1) and (iD = 0)) then
Не даёт запустить задачу вообще(Если выполен план-задача(остановка к примеру)) .
как унать сколько прошло сек. между указанным временем и заданным?

Последний раз редактировалось Человек_Борща; 29.10.2011 в 16:02.
Человек_Борща вне форума Ответить с цитированием
Старый 29.10.2011, 18:42   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
как унать сколько прошло сек. между указанным временем и заданным?
Вы не забыли, что "одна тема - один вопрос" ?
Ответ:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var tmp: string;
begin
DateTimeToString(tmp, 'ss', t2-t1);
Label1.Caption:=tmp;
end;
Правда, если интервал больше минуты, нужно добавить по 60 сек. за каждую минуту ...

Последний раз редактировалось mihali4; 29.10.2011 в 19:17.
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Увеличение даты на один день atenon C++ Builder 2 11.03.2011 18:52
инкремент и for ts-alan Общие вопросы C/C++ 6 25.08.2010 13:57
Маштабирование рисунка(увелечение) в C# Frenki Помощь студентам 5 15.03.2010 13:18
определить день недели по заданному числу (считать в месяце 30 дней и первый день месяца понедельник dan1991 Помощь студентам 1 01.03.2009 20:59