Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

Расчет времени! Нужна помощь...   Найти похожие ветки 

 
Zilog ©   (2004-03-24 14:21) [0]

короче вся задача такая: есть события вход и выход. время событий храню в real. Считаю за определенный промежуток дней, например за неделю, и все посчитанные промежутки плюсую в одну переменную: AllTime := AllTime+ OutTime  - InTime
изначально AllTime := 0.
как я предполагаю там собирается вся необходимая информация типа TDateTime. Вот мне отттуда и надо вытащить коол-во часов, и кол-во оставшихся минут....

часы вытаскиваю так:

h := AllTime/(1/24); (правильно?!)

нужно еще вытащить минуты..


 
Романов Р.В. ©   (2004-03-24 14:27) [1]

m := (AllTime*24 - h)*60


 
Digitman ©   (2004-03-24 14:37) [2]


> как я предполагаю там собирается вся необходимая информация
> типа TDateTime


TDataTime = double

непонятно почему выбран тип real .. сэкономил 2 байта что ли ? зато проиграл в точности и в общей производительности алгоритма


> часы вытаскиваю так:
>
> h := AllTime/(1/24); (правильно?!)


var
 Hour, Min, Sec, MSec: Word;

DecodeTime(AllTime, Hour, Min, Sec, MSec); //разложили дроб.часть на часы-минуты-секунды

//Trunc(AllTime) - целая часть, отражающая число полных суток
h := Trunc(AllTime) * 24 + Hour;


 
Романов Р.В. ©   (2004-03-24 14:41) [3]


> Digitman ©   (24.03.04 14:37) [2]

Real по умолчанию равен double


 
Digitman ©   (2004-03-24 14:44) [4]


> Романов Р.В. ©   (24.03.04 14:41) [3]


я почему-то посчитал, что речь идет о Real48

точность в выражении мысли в коде недвусмысленными идентификаторами - главное оружие программера)


 
Anatoly Podgoretsky ©   (2004-03-24 14:45) [5]

В сутках 24 часа, в часе 60 минут, в минуте 60 секунд, в секунде 1000 миллисекунд, все это хранится в TDateTime как сутки это целое. Можно пользоваться арифметическими операциями умножение и вычитания, мможноо функциями преобразования, в зависимости от того в каком виде нужен результат. Digitman привел функцию для разбиения дробной части на составляющие, а для преобразования целой части используй функцию TRUNC


 
Zilog ©   (2004-03-24 14:49) [6]

Еще один глюк обнаружил:
AllTime := AllTime+ OutTime  - InTime

в AllTime всегда целая часть получается ноль.... отчего то может быть?


 
Романов Р.В. ©   (2004-03-24 15:01) [7]


> в AllTime всегда целая часть получается ноль.... отчего
> то может быть?

OutTime  - InTime < 1



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.029 c
4-1075492150
mixrud
2004-01-30 22:49
2004.04.11
Как получить текущую область обновления рабочего стола


7-1075288058
Floppy
2004-01-28 14:07
2004.04.11
Версия ADO


1-1082562482
Ivolg
2004-04-21 19:48
2004.04.11
Изобоажение


14-1079281709
Undert
2004-03-14 19:28
2004.04.11
Кто нить использовал SmartBot ?


1-1082487064
Shopot
2004-04-20 22:51
2004.04.11
Перетаскивание компонентов.