Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.046 c
1-1079887878
mur
2004-03-21 19:51
2004.04.11
как эмулировать событие?


1-1082653159
EugeneKo
2004-04-22 20:59
2004.04.11
Баги в Decision Cube. Есть другие инструменты?


1-1082730201
Bohdan
2004-04-23 18:23
2004.04.11
TShellListView - Где находится свойство FileName?


1-1080033509
alk_none
2004-03-23 12:18
2004.04.11
creating add-ins for MS Office


11-1060756713
AMS
2003-08-13 10:38
2004.04.11
Ошибка 255





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский