Главная страница
    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.042 c
8-1069227595
Leons
2003-11-19 10:39
2004.04.11
Помогите выбрать подходящий MP3-плеер...


1-1082401016
tivispider
2004-04-19 22:56
2004.04.11
помогите оптимизировать код


4-1079425476
bg8
2004-03-16 11:24
2004.04.11
Установка приоритета приложения


14-1081788868
Mishenka
2004-04-12 20:54
2004.04.11
Где достать Help для RxLib?


14-1082102280
Dmitriy O.
2004-04-16 11:58
2004.04.11
Предлагаю заценить прогу





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