![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Добрый день!
Прошу помочь, сам уже не справляюсь. В 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)
| ||