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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2014, 13:54   #1
ul_mrAlex
Пользователь
 
Регистрация: 01.04.2013
Сообщений: 23
По умолчанию Десятые доли часа преобразовать в обычный вид.

Помогите преобразовать десятичное число в обычный вид.
Идет расчет суммы столбца из базы:
PHP код:
var iinteger;
    
s:double;
begin
try
S:=0;
i:=DM.ADO_PZP_V_DEPO.RecNo;
DM.ADO_PZP_V_DEPO.DisableControls;
DM.ADO_PZP_V_DEPO.First;
while 
not(DM.ADO_PZP_V_DEPO.Eof) do
begin
S
:=S+DM.ADO_PZP_V_DEPO.FieldByName('plv_num').AsFloat;
DM.ADO_PZP_V_DEPO.Next;
end;
DM.ADO_PZP_V_DEPO.RecNo:=i;
DM.ADO_PZP_V_DEPO.EnableControls;
vr_zam.Text:=FloatToStr(s); 
Например S со значением 0,07 д.б. выведено как: 00:04
Пытался, баловался с этим:
PHP код:
minutes := MinutesBetween(s0);
Label16.Caption:=Format('%.2d:%.2d', [minutes div 60minutes mod 60]); 
Выводит как: 01:40
ul_mrAlex вне форума Ответить с цитированием
Старый 07.07.2014, 14:36   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
FormatDateTime('hh:nn:ss',s/24)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.07.2014, 15:58   #3
ul_mrAlex
Пользователь
 
Регистрация: 01.04.2013
Сообщений: 23
По умолчанию

Хорошо, спасибо!
Следующий вопрос.
Допустим число: 27,89 д.б. 27:53, показывает 03:53 т.е. он сутки прибавляет в уме.
PS Считается регулярность движения на транспорте.
ul_mrAlex вне форума Ответить с цитированием
Старый 07.07.2014, 16:07   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Выдели FormatDateTime и нажми F1. Или гугл в помощь по поводу функции FormatDateTime и её 1-го параметра. Но если суток будет больше 31, то проблема нарисуется

или так

Код:
FormatFloat('#0дн ;;#',Trunc(s/24))+FormatDateTime('hh:nn:ss',s/24)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 07.07.2014 в 17:05.
Аватар вне форума Ответить с цитированием
Старый 08.07.2014, 07:39   #5
ul_mrAlex
Пользователь
 
Регистрация: 01.04.2013
Сообщений: 23
По умолчанию

Спасибо. Отделался вот таким вариантом:
Код:
vr_zam1.Caption := IntToStr(Trunc(S)) + ':' + FormatDateTime('nn', Frac(S)*(1/24));
ul_mrAlex вне форума Ответить с цитированием
Старый 08.07.2014, 13:16   #6
ul_mrAlex
Пользователь
 
Регистрация: 01.04.2013
Сообщений: 23
По умолчанию

Кхм. Расчет обманывает.
0:02 в десятые доли - 0,01, а д.б. 0,03
Как вывести правильно?
ul_mrAlex вне форума Ответить с цитированием
Старый 08.07.2014, 13:21   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А с чего это 2 минуты в десятые доли часа получили 0.01? Сотая доля часа - 36сек
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.07.2014, 13:27   #8
ul_mrAlex
Пользователь
 
Регистрация: 01.04.2013
Сообщений: 23
По умолчанию

Ну вот, по кнопке расчет времени, в лейбл выводит 0,01.
Полностью код:

Код:
procedure TPVP_V_DEPO_PROSMOTR.BTN_zamClick(Sender: TObject);
var i: integer;
    s:double;
begin
try
DM.ADO_PZP_V_DEPO.Sql.Clear;
DM.ADO_PZP_V_DEPO.SQL.Text := 'SELECT * FROM PZP_V_DEPO WHERE date like :pDate1 and podrazd like :FindValue and ((PZP_V_DEPO.OPOZD)=0) and ((PZP_V_DEPO.PLV_NUM)<=0.17) '+
'and  (((PZP_V_DEPO.TEH)<>"23,1" And (PZP_V_DEPO.TEH)<>"23,2" And (PZP_V_DEPO.TEH)<>"25" And (PZP_V_DEPO.TEH)<>"26")) ORDER BY PZP_V_DEPO.ZAH';
DM.ADO_PZP_V_DEPO.Parameters.ParamByName('pDate1').Value := DateOf(date.Date);
DM.ADO_PZP_V_DEPO.Parameters.ParamByName('FindValue').Value:=DBCB_T_DEPO.Text;
DM.ADO_PZP_V_DEPO.Open;
i:=DM.ADO_PZP_V_DEPO.RecordCount;
zamena.Caption:=IntToStr(i);

S:=0;
i:=DM.ADO_PZP_V_DEPO.RecNo;
DM.ADO_PZP_V_DEPO.DisableControls;
DM.ADO_PZP_V_DEPO.First;
while not(DM.ADO_PZP_V_DEPO.Eof) do
begin
S:=S+DM.ADO_PZP_V_DEPO.FieldByName('plv_num').AsFloat;
DM.ADO_PZP_V_DEPO.Next;
end;
DM.ADO_PZP_V_DEPO.RecNo:=i;
DM.ADO_PZP_V_DEPO.EnableControls;
vr_zam.Text:=FloatToStr(s);
//FormatFloat('#0äí ;;#',Trunc(s/24))+FormatDateTime('hh:nn:ss',s/24)
vr_zam1.Caption := IntToStr(Trunc(S)) + ':' + FormatDateTime('nn', Frac(S)*(1/24));

except
on error: EDatabaseError do begin
MessageDlg('Ïðîèçîøëà îøèáêà ïðè âûïîëíåíèè çàïðîñà:'+
error.Message ,mtError,[mbOK],0);
end;
end;
end;
ul_mrAlex вне форума Ответить с цитированием
Старый 08.07.2014, 13:44   #9
ul_mrAlex
Пользователь
 
Регистрация: 01.04.2013
Сообщений: 23
По умолчанию

Всё, разобрался!
ul_mrAlex вне форума Ответить с цитированием
Старый 08.07.2014, 13:56   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Вообще не вижу в коде, чтобы в Label что-либо в таком формате выводилось
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одноклеточная амеба каждые 3 часа делится на две клетки. Вывести на экран количество амеб за каждые 3 часа суток KriSSka Паскаль, Turbo Pascal, PascalABC.NET 1 10.04.2012 18:19
Как на паскале перевести числа в обычный вид? GidroFobia Помощь студентам 39 16.03.2012 22:53
[Си++ Билдер]Преобразовать математическую формулу в нормальный для компилятора вид mrG0bliN Помощь студентам 7 24.01.2012 19:28
из десятичной системы счисления преобразовать в двоичную систему в экспоненциальный вид [Паскаль] Yamkin Помощь студентам 3 16.12.2010 00:08
Из программы выгружается отчет (плохо), его нужно преобразовать в другой вид (хорошо) Anutik Microsoft Office Excel 4 23.09.2009 11:42