Главная страница
    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.066 c
11-1059567907
Aser2k
2003-07-30 16:25
2004.04.11
А где в KOL какой-нибудь StringGrid или что-то вроде ???


1-1080229284
rimd
2004-03-25 18:41
2004.04.11
Каверзный вопрос про потоки


1-1082724304
ivn
2004-04-23 16:45
2004.04.11
TGridDrawInfo?


1-1082713218
mikeflat
2004-04-23 13:40
2004.04.11
Сохранение объекта в dfm


14-1079244270
Думкин
2004-03-14 09:04
2004.04.11
С днем рождения! 13 марта.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский