Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.09.2018, 15:18
Baevj Baevj вне форума
Прохожий
 
Регистрация: 04.09.2018
Сообщения: 1
Версия Delphi: Lazarus
Репутация: 10
По умолчанию Сложение времен нескольких 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  
Старый 04.09.2018, 17:29
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Здесь нужно сначало все "времена" перевести в минуты, сложить их, а затем вернуть обратно в поле ввода текстом, вот пример
Код:
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;
Вложения
Тип файла: zip Baevj.zip (2.2 Кбайт, 3 просмотров)

Последний раз редактировалось Alegun, 05.09.2018 в 14:26.
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
Baevj (05.09.2018)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:01.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter