Текущий архив: 2003.05.08;
Скачать: CL | DM;
ВнизGetTickCount Найти похожие ветки
← →
Shuric (2003-04-24 22:09) [0]Привет всем. Дуратский вопрос, но никак не могу сообразить :(
Подскажите плиз, как привести результат GetTickCount к TDateTime. Спасибо.
← →
MBo (2003-04-24 22:13) [1]А зачем?
Если все же нужно, следует просто прочитать в хелпе о TDateTime.
← →
Shuric (2003-04-24 22:16) [2]>MBo ©
t := GetTickCount + 1800000;
***.Caption := DateTimeToStr(Now + ?(t)); :(
← →
Anatoly Podgorestky (2003-04-24 22:19) [3]Если ты не еще не знаешь, то в сутках 24 часа, в часе 60 минут, в ммнуте 60 секунд, в секунде 1000 миллисекунд. И теперь самое главное GetTickCount выдает результаты в миллисекундах и это не время!!!
Но если хочется то наверно в школе переводил из одних едениц измернения в другие, напприсер из миллиграм в граммы, если переводил, то сумеешь перевести и в дни, если нет то значит не судьба, придется идти для переобучения в начальную школу, первый/второй классы.
← →
MBo (2003-04-24 22:20) [4]наводящие вопросы - в каких единицах измеряется GetTickCount?
Что такое TDateTime?
← →
Style (2003-04-24 22:28) [5]Anatoly Podgorestky>
Я слышал, что GetTickCount несколько не точен для измерения времени. Т.е. это не совсем миллисекунды, могут быть не точности.
В своей проге для этого http://novator.org, я перед началом
измерения засекал время, затем отсчета использовал GetTickCount
но на всякий случай в конце измерения вычитал время начала из текущего.
Так ли это??
← →
Shuric (2003-04-24 22:34) [6]Острики блин :) Вдруг да функция есть.
Ленивый я. Понятное делить, делить и еще раз делить. Однако к TDateTime результат прибавлять, помоему, нельзя. То есть сначало в текс а потом... И вооще системный таймер 55 msec
← →
jack128 (2003-04-24 23:51) [7]к TdateTime как и к любому вещественному числу прибавлять можно..
непонятен смысл перевода GetTickCount в TdateTime...
← →
Anatoly Podgorestky (2003-04-25 00:11) [8]Зачем три раза делить, надо умножать
← →
Anatoly Podgorestky (2003-04-25 00:12) [9]Style © (24.04.03 22:28)
Он точный, это виндоус не реального времени
← →
Shuric (2003-04-25 00:38) [10]Чтоб привести - делить, смотреть остаток... Ну к типа год, месяц, день и т.д., помоему, может ошибаюсь. TDateTime - он вроде тоже с какой-то даты начинается. А проблема - есть, допустим действие, выполняемое по таймеру. Первое выполнение -StartTick=GetTickCount, окончание - EndTick=GetTickCount + 1800000. А надо сказать пользователю доходчево, что окончится, допустим Now + ?(EndTick - GetTickCount)...
← →
Anatoly Podgorestky (2003-04-25 08:44) [11]Задание по счету выполнил, сколько миллисекунд в сутках, иначе дпльше не стоит продолжать.
← →
kostik78ua (2003-04-25 10:26) [12]Первое, что пришло в голову:
ShowMessage(FormatDateTime("dd:mm:yyyy hh:nn:ss", TimeStampToDateTime( MSecsToTimeStamp(GetTickCount))));
← →
Bel (2003-04-25 10:34) [13]> Shuric
Что-то не совсем понятно, чего ты хочешь. Если тебе надо прибавить к какому-то значению TDateTime определённое количество секунд (минут, часов), то есть функции:
IncMilliSecond, IncSecond, IncMinute, IncHour... и т.д. до Year. Может это тебе нужно? Если нет, скажи что конкретно тебе надо.
← →
kull (2003-04-25 10:36) [14]
> Anatoly Podgorestky (24.04.03 22:19)
> Если ты не еще не знаешь, то в сутках 24 часа, в часе 60
> минут, в ммнуте 60 секунд, в секунде 1000 миллисекунд. И
> теперь самое главное GetTickCount выдает результаты в миллисекундах
> и это не время!!!
Всякое слышал, но то что милисекунды - это не время... Это для меня новость! :)
← →
Anatoly Podgorestky (2003-04-25 10:40) [15]TDateTime это дата/время, а вот 1000 миллисекунд в этом смысле не время, а интервал.
Это тоже для новость?
1000 мс в этом будет 30.12.1899 00:00:01 ты думаешь ему это нужно?
← →
kull (2003-04-25 10:51) [16]Может вспомним в чем вря измеряется?
Год, месяц, неделя, сутки, час, минута, секунда, милисекунда, микросекунда, и.т.п.
← →
Anatoly Podgorestky (2003-04-25 10:59) [17]Правильно, а интервалы?
Или для тебя нет разницы между интервалом и временем?
Типа температура - температуру уже будет не температура, а интервал или по другому разница.
Если так то я тут бессилен.
← →
kull (2003-04-25 11:01) [18]
> TDateTime это дата/время, а вот 1000 миллисекунд в этом
> смысле не время, а интервал.
> Это тоже для новость?
Можете привести примеры, где время не является интервалом?
← →
Bel (2003-04-25 11:02) [19]> kull ©
Ты не прав. Сказав "GetTickCount - это не время", Anatoly Podgorestky имел ввиду, что это не текущее время. Это количество миллисекунд, прошедшее с момента старта Винды, т.е. интервал. И вообще, Делфи не знает, что такое "время", поэтому оперировать "человеческими" понятиями здесь не имеет смысла. GetTickCount для Делфи - просто число типа Cardinal, а TDateTime - число типа Double.
← →
kull (2003-04-25 11:13) [20]
> Bel © (25.04.03 11:02)
А что такое текущее время? Разве это не интервал?
Например какой нынче год? - 2003. Что просто так - 2003?
Нет это число означает количество лет прошедших от ... А дальше кому как нравится от Рождества Христова или от начала нашей эры... Так что так называемое текущее время ни что иное как интервал.
← →
Bel (2003-04-25 11:23) [21]> kull © (25.04.03 11:13)
К теме вопроса твои философские изыскания не имеют никакого отношения. Здесь форум по Делфи, если ты ещё не заметил.
Up:
> Делфи не знает, что такое "время", поэтому оперировать "человеческими" понятиями здесь не имеет смысла. GetTickCount для Делфи - просто число типа Cardinal, а TDateTime - число типа Double.
← →
Anatoly Podgorestky (2003-04-25 11:29) [22]Это точно, как и понятие год к дате. К сожалению тут я бессилен, это к другим специалистам.
← →
kull (2003-04-25 11:36) [23]
> > Делфи не знает, что такое "время", поэтому оперировать
> "человеческими" понятиями здесь не имеет смысла. GetTickCount
> для Делфи - просто число типа Cardinal, а TDateTime - число
> типа Double.
Чтож вы оперируете понятиями время и интервал?
К тому же это вовсе не филосовские изыскания. Заглянем в тот же Help;
TDateTime:
...
The integral part of a Delphi TDateTime value is the number of days that have passed since 12/30/1899.
GetTickCount:
If the function succeeds, the return value is the number of milliseconds that have elapsed since Windows was started.
так что Now и GetTickCount - обе функции возвращают интервал. Естественно что можно одни единицы перевести в другие.
Время это как расстояние и само по себе не имеет смысла а только при отсчете от определенного начала. И ничего общего с такой величиной как темература не имеет (так что не надо ее в пример приводить)... :)
← →
Anatoly Podgorestky (2003-04-25 11:39) [24]Безнадежно
← →
kull (2003-04-25 11:45) [25]Робяты! Просто признайте свою неправоту...
Хотя возможно это безнадежно...
← →
Anatoly Podgorestky (2003-04-25 11:53) [26]Чувствуется что у тебя большие проблемы с логикой, если для тебя прошло три часа и три часа дня одно и тоже.
← →
REA (2003-04-25 11:54) [27]Ну давайте еще парсеки в ангстремы переведем и успокоимся.
← →
kull (2003-04-25 12:08) [28]
> Anatoly Podgorestky (25.04.03 11:53)
> Чувствуется что у тебя большие проблемы с логикой, если
> для тебя прошло три часа и три часа дня одно и тоже.
Так, опять начнем с начала...
Что такое три часа дня? Это как раз значит что прошло три часа с полудня. Или не так?
← →
Anatoly Podgorestky (2003-04-25 12:15) [29]Ладно я уже сказал, что это безнадежный случай, так что не буду больше на тебя тратить время, ну разве что в исключительно возмутительном случае.
← →
Shirson (2003-04-25 12:16) [30]>Shuric
>Привет всем. Дуратский вопрос, но никак не могу сообразить :(
Подскажите плиз, как привести результат GetTickCount к TDateTime. Спасибо.
Перевод именно в TDateTime не имеет смысла по нескольким причинам.
1. 0 в TDateTime это 30.12.1899 - что тебе это даст? Или ты хочешь дату старта винды определить? Но тогда:
2. GetTickCount возвращает Cardinal - Т.е. через 50 суток работы виндов он обнулится.
Если ты хочешь получить время работы в часах:минутах:секундах:милисекундах, то используй вариант
var
H,M,S,Ms:integer;
Tm:Cardinal;
begin
Tm:=GetTickCount;
H:=Trunc(Tm/3600000);
Tm:=Tm-H*3600000;
M:=Trunc(Tm/60000);
Tm:=Tm-M*60000;
S:=Trunc(Tm/1000);
Tm:=Tm-S*1000;
Ms:=Tm;
...
end;
H - часы
M - минуты
S - секунды
Ms - милисекунды
Их можешь скомпоновать в красивый вид и показать юзверю или ещё на что пустить.
Если же тебе нужно считать "время жизни" винды, которое будет заведомо больше 49 суток, то лучше завести счётчик (типа Cardinal) и начислять в него секунды. Такого счётчика хватит лет на 130 :)
← →
Palladin (2003-04-25 12:18) [31]
> kull © (25.04.03 12:08)
а три дня откуда прошло?
← →
kull (2003-04-25 12:29) [32]А три дня пройдет тогда, когда некоторые товарищи поймут, что количество времени измеряется от какой то начальной точки и не бывает просто так 3 часа дня.
← →
Palladin (2003-04-25 12:37) [33]бывае 3 часа дня - это время (можно представить TDateTime)
бывает 3 часа с момента до момента - это интервал
GetTickCount - это интервал
← →
Palladin (2003-04-25 12:45) [34]контрольный выстрел:
время нельзя складывать, а временные интервалы можно
← →
Shuric (2003-04-25 14:12) [35]На мой взгляд, время абстрактное понятие, со всеми вытекающими последствиями :) ,а вот интервал даже очень прикладное. Горбуха из темы неевклидовой "геометрии" - что есть кротчайшее расстояние между точками, ответ - ничто :)
Вопрос перевода решается, конечно же как предложил >Shirson, за что большое спасибо. Матировка вопроса - многие знают недокументированные функции, а вдруг. И вообще виноваты арабы с их шестидесятеричной системой счисления (может, переведете в третий класс >Anatoly Podgorestky).
← →
Anatoly Podgorestky (2003-04-25 14:16) [36]За Евклида в старший класс, ни каждый знает ничто.
← →
evvcom (2003-04-25 14:21) [37]Время - понятие относительное, а не абстрактное.
← →
kull (2003-04-25 15:38) [38]
> evvcom © (25.04.03 14:21)
Вот! Молодец!
>
> Palladin © (25.04.03 12:37)
> бывае 3 часа дня - это время (можно представить TDateTime)
> бывает 3 часа с момента до момента - это интервал
>
> GetTickCount - это интервал
DecodeTime(Time, H, M, S, MS)
Когда этот вызов возвращает в переменной H число 3, не задумывались откуда система берет это число?
Проведем эксперимент.
Вызываем DecodeTime(Time, H1, M, S, MS) в 12:00 (Полдень)
В H1=12
Вызываем DecodeTime(Time, H2, M, S, MS) в 15:00
В H2=15
H2-H1 = 3
Вот они ваши 3 часа дня!
← →
kull (2003-04-25 15:43) [39]
> Palladin
TDateTime:
...
The integral part of a Delphi TDateTime value is the number of days that have passed since 12/30/1899.
Может перевести?
← →
Palladin (2003-04-25 16:00) [40]восставшие мертвецы...
прав
> Anatoly Podgorestky (25.04.03 12:15)
← →
kull (2003-04-25 16:20) [41]Что крыть нечем?
← →
kull (2003-04-25 16:35) [42]И словаря Даля:
ВРЕМЯ - " длительность бытия; пространство в бытии; последовательность существования; продолжение случаев, событий; дни за днями и века за веками; последовательное течение суток за сутками. Время, сила в своих развитиях; пространство, в ее сочетаниях".
← →
Anatoly Podgorestky (2003-04-25 16:48) [43]Palladin © (25.04.03 16:00)
Оставь его в покое пусть постебается.
← →
REA (2003-04-25 16:51) [44]kull - в потрепаться вместе с твоим другом Далем
← →
kull (2003-04-25 16:53) [45]Looser - это тот кто не признает своих ошибок.
Я КОНЧИЛ!
← →
kull (2003-04-25 16:54) [46]Ошибочка...
Loser - это тот кто не признает своих ошибок.
Я КОНЧИЛ!
← →
Shuric (2003-04-26 00:22) [47]Я тут эксперимент провел, и странное дело вроде результат похож, а вы все грызлись :)
var
ATimeStamp, ATimeStamp1, AResultTimeStamp: TTimeStamp;
begin
ATimeStamp := DateTimeToTimeStamp(Now);
ATimeStamp1 := MSecsToTimeStamp((SendRecord^.EndTic - GetTicCount);
AResultTimeStamp.Time := ATimeStamp.Time + ATimeStamp1.Time;
AResultTimeStamp.Date := ATimeStamp.Date + ATimeStamp1.Date;
AListItem.SubItems.Add(DateTimeToStr(TimeStampToDateTime(AResultTimeStamp))); и т.д. Супер конец.
← →
Anatoly Podgoretsky (2003-04-26 09:02) [48]Значит делить так и не научился, а ведь приведена полная информации о стурктуре дня - в часах, минутах и т.д.
← →
Ик сик (2003-04-26 10:48) [49]
> kull ©
- cool!
← →
Developer (2003-04-26 16:52) [50]>Kull Когда я читаю твои посты мне кажется что ты бредишь.
>Anatoly Podgoretsky - rules
← →
Palladin (2003-04-26 17:13) [51]kull просто не понял о чем речь...
ему говорят что между двумя точками есть расстояние, а он говорит что вектор минус вектор тоже вектор, но не понимает что модуль вектора и есть расстояние...
Страницы: 1 2 вся ветка
Текущий архив: 2003.05.08;
Скачать: CL | DM;
Память: 0.57 MB
Время: 0.008 c