Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Добавление Часов, Минут, Секунд  [new]
alex_od_
Member

Откуда:
Сообщений: 58
Привет Парни.... Не пинайте Сильно ))
Подскажите Как оптимизировать код правильно...
Разбираем время на часы, минуты, секунды.. После обнуляем время, тоесть вычитаем из часа - час, минут - минуты,
секунд - секунды... тоесть обнуляем.. и собираем обратно с возможностью отдельного добавления Часов, Минут, Секунд...
Проблема в неправильном пересчете... Тоесть с 00:00 нормально а к 23:00 пропало 2 часа и пискер показывает 21:00
Подскажите если не трудно...!!!

procedure TForm1.Button1Click(Sender: TObject);
var
   Ts,Tf,TFHour,TFMinute,TFSecond: TTime;
   SHour,SMinute,SSecond: String;
   FHour,FMinute,FSecond: String;
   IntSHour,IntSMinute,IntSSecond: Integer;
begin
   try
   Ts := Now;
   SHour   := FormatDateTime('hh',Ts);
   SMinute := FormatDateTime('nn',Ts);
   SSecond := FormatDateTime('ss',Ts);
   dtpStart1.Time := StrToTime(SHour+':'+SMinute+':'+SSecond);
   Edit1.Text := SHour;
   Edit2.Text := SMinute;
   Edit3.Text := SSecond;
   IntSHour   := StrToInt(SHour);
   IntSMinute := StrToInt(SMinute);
   IntSSecond := StrToInt(SSecond);
   Edit4.Text := IntToStr(IntSHour-IntSHour);
   Edit5.Text := IntToStr(IntSMinute-IntSMinute);
   Edit6.Text := IntToStr(IntSSecond-IntSSecond);
   FHour   := Edit1.Text;
   FMinute := Edit5.Text;
   FSecond := Edit6.Text;
   Tf := StrToTime(FHour+':'+FMinute+':'+FSecond);
   TFHour   := IncHour(Tf,+SpinEditHour.Value);
   TFMinute := IncMinute(Tf,+SpinEditMinute.Value);
   TFSecond := IncSecond(Tf,+SpinEditSecond.Value);
   Edit7.Text := TimeToStr(TFHour);
   Edit8.Text := TimeToStr(TFMinute);
   Edit9.Text := TimeToStr(TFSecond);
   dtpFinish1.Time := TFHour+TFMinute+TFSecond+(0/(24*60*60));  // Вот ТУТ..!!!!!!!!!!
   except
   MessageDlg('Ошибка..!!!',mtError,[mbOk],0);
   end;
end;


К сообщению приложен файл (Projects.rar - 3Kb) cкачать
3 июн 21, 01:07    [22330661]     Ответить | Цитировать Сообщить модератору
 Re: Добавление Часов, Минут, Секунд  [new]
rgreat
Member

Откуда:
Сообщений: 6711
Ты забыл сказать в чем собственно состоит задача.
3 июн 21, 01:09    [22330662]     Ответить | Цитировать Сообщить модератору
 Re: Добавление Часов, Минут, Секунд  [new]
alex_od_
Member

Откуда:
Сообщений: 58
rgreat
Ты забыл сказать в чем собственно состоит задача.


Как правильно поставить пересчет времени что б к вечеру не уплывало время

Например в 22:00 все три эдита показывют это время то при сложении у нас получается 66 часов - минус 2*24 (тоесть 2 дня)
показывает 18:00 - плывет время от неправильного пересчета

То есть неправильное сложение времени... я уже мозг сломал..)))

Сообщение было отредактировано: 3 июн 21, 01:13
3 июн 21, 01:19    [22330665]     Ответить | Цитировать Сообщить модератору
 Re: Добавление Часов, Минут, Секунд  [new]
rgreat
Member

Откуда:
Сообщений: 6711
alex_od_,

Понятней не стало.
3 июн 21, 01:21    [22330666]     Ответить | Цитировать Сообщить модератору
 Re: Добавление Часов, Минут, Секунд  [new]
alex_od_
Member

Откуда:
Сообщений: 58
rgreat
alex_od_,

Понятней не стало.


 dtpFinish1.Time := TFHour+TFMinute+TFSecond+(0/(24*60*60));  // Вот ТУТ..!!!!!!!!!!


Постараюсь обьяснить проще... есть шедулер. в котором есть пицкеры...
Если ты открываешь его и хочешь заполнить ночью то пицкер тебе предлагает выставить время часы со спинэдитом что б была возможность добавить +1 или +5 часов... и минуты с секундами обнуленные (что б лишний раз не крутить скролл...
Так вот ночью он показывает точное время часов А к 22:00 - в место десяти вечера показывает 18:00 то есть шесть вечера...
Время уплывает - не могу понять почему...!!
3 июн 21, 01:30    [22330668]     Ответить | Цитировать Сообщить модератору
 Re: Добавление Часов, Минут, Секунд  [new]
rgreat
Member

Откуда:
Сообщений: 6711
alex_od_,

Сильно понятней не стало.
Но по коду видно что ты страдаешь какой-то адовой хренью.

Открой для себя функции DecodeTime и EncodeTime.

Перекодировать что-то там через текст - вообще не нужно и хрень полная.

P.S. 0/(24*60*60) - это волшебно!

Сообщение было отредактировано: 3 июн 21, 01:32
3 июн 21, 01:40    [22330670]     Ответить | Цитировать Сообщить модератору
 Re: Добавление Часов, Минут, Секунд  [new]
rgreat
Member

Откуда:
Сообщений: 6711
Ну и что бы ты понимал:

TDateTime = Часы/24 + Минуты/24/60 + Секунды/24/60/60.
3 июн 21, 01:44    [22330671]     Ответить | Цитировать Сообщить модератору
 Re: Добавление Часов, Минут, Секунд  [new]
alex_od_
Member

Откуда:
Сообщений: 58
Спасибо...буду разбираться с функцией DecodeTime и EncodeTime.

Сообщение было отредактировано: 3 июн 21, 01:39
3 июн 21, 01:48    [22330672]     Ответить | Цитировать Сообщить модератору
 Re: Добавление Часов, Минут, Секунд  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 65951
Блог
alex_od_
Подскажите если не трудно...!!!

begin
  dtpStart1.Time := Frac(Now);
  dtpFinish1.Time := Frac(dtpStart1.Time + SpinEditHour.Value / 24 + SpinEditMinute.Value / 1440 + SpinEditSecond.Value / 86400);
end;

и больше не пиши на форум под градусом.

Сообщение было отредактировано: 3 июн 21, 01:51
3 июн 21, 01:55    [22330674]     Ответить | Цитировать Сообщить модератору
 Re: Добавление Часов, Минут, Секунд  [new]
alex_od_
Member

Откуда:
Сообщений: 58
softwarer Спасибо Огромное .... Всем Спасибо..!!!
3 июн 21, 02:10    [22330676]     Ответить | Цитировать Сообщить модератору
 Re: Добавление Часов, Минут, Секунд  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6505
alex_od_,

Дату себе заведи еще для шедулера. Сейчас ты похоже тупо задаешь период - через сколько надо запустится.
4 июн 21, 13:53    [22331356]     Ответить | Цитировать Сообщить модератору
 Re: Добавление Часов, Минут, Секунд  [new]
Cobalt747
Member

Откуда:
Сообщений: 2318
alex_od_,

открой для себя модуль DateUtils, там есть такие функции как IncHour
6 июн 21, 12:41    [22331887]     Ответить | Цитировать Сообщить модератору
 Re: Добавление Часов, Минут, Секунд  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4654
Cobalt747
alex_od_,

открой для себя модуль DateUtils, там есть такие функции как IncHour
Так не интересно. Там еще и всякие типа HoursBetween есть... Совсем разленится же человек.
6 июн 21, 12:52    [22331890]     Ответить | Цитировать Сообщить модератору
 Re: Добавление Часов, Минут, Секунд  [new]
alex_od_
Member

Откуда:
Сообщений: 58
Парни Спасибо Всем.... Разобрался...
7 июн 21, 03:01    [22332065]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить