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

Вниз

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

Наверх





Память: 0.57 MB
Время: 0.008 c
1-23177
prihod
2003-04-24 17:01
2003.05.08
НАРОД , поморите кто может с РЕСУРСАМИ...


14-23329
race1
2003-04-18 12:59
2003.05.08
ностальжи


14-23313
DeMoN-777
2003-04-09 16:14
2003.05.08
IDSL


8-23236
reticon
2003-01-27 00:59
2003.05.08
можно ли поместить bmp в dll???


14-23388
kaif
2003-04-21 17:20
2003.05.08
Как задействовать точку в NumLock в XP?





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