|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Сложение времен нескольких edit/label
Добрый день!
Прошу помочь, сам уже не справляюсь. В Edit1 динамически записывается время в формате '23:59'. Есть кнопка, которая последовательно записывает в свойства Edit[2-7].text значения из основного компонента Edit1. И есть поле Edit8, которое должно суммировать записанные времена в Edit[2-7]. Причем сумма отображаемого времени не должна ограничиваться 24 часами DateTime. Какие только ухищрения я не пробывал с этими переводами типов. не получилось даже количество итоговых минут посчитать. Научите пожалуйста, как просуммировать несколько времен. var ld1,ld2,ld3,ld4,ld5,ld6 : integer; begin if edit2.text = '00:00' then begin edit2.text:=edit1.text; ld1:=minutesbetween(0,strtotime(edit1.text)) end else if edit3.text = '00:00' then begin edit3.text:=edit1.text; ld2:=minutesbetween(0,strtotime(edit1.text)) end ... else if edit7.text = '00:00' then begin edit7.text:=edit1.text; ld6:=minutesbetween(0,strtotime(edit1.text)) end; edit8.Text:=inttostr(ld1+ld2+ld3+ld4+ld5+ld6); |
#2
|
||||
|
||||
Здесь нужно сначало все "времена" перевести в минуты, сложить их, а затем вернуть обратно в поле ввода текстом, вот пример
Код:
var hr: integer = 0; mn: integer = 0; ed: integer = 2; function tm(ds: string): integer; // ds = "03:12" > tm = (3*60)+12 = 192 begin tm:= (StrToInt(ds[1] + ds[2]) * 60) + StrToInt(ds[4] + ds[5]); end; procedure TForm1.Timer1Timer(Sender: TObject); begin if mn > 59 then begin mn:= 0; Inc(hr); end; if hr > 23 then hr:= 0; Edit1.Text:= Format('%.2d:%.2d',[hr, mn]); // .Text = "00:00".."23:59" Inc(mn); end; procedure TForm1.Button1Click(Sender: TObject); var i, m: integer; begin (FindComponent('Edit' + IntToStr(ed)) as TEdit).Text:= Edit1.Text; inc(ed); if ed > 7 then ed:= 2; m:= 0; for i:= 2 to 7 do Inc(m,tm((FindComponent('Edit'+IntToStr(i)) as TEdit).Text)); Edit8.Text:= Format('%.2d:%.2d',[m div 60,m mod 60]);//192div60=3;..mod..=12 > "03:12" end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 05.09.2018 в 14:26. |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Baevj (05.09.2018)
|