Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

точное отслеживание времени


Страницы:   1 2

tickler ©   (2006-04-30 21:24:00) 

Как организовать точное слежение за временем?  Таймер дает заметную задержку уже через несколько секунд. Нужно знать сколько прошло милисекунд с момента запуска программы.


DrPass   (2006-05-07 03:03:00) [1]


> Германн ©   (07.05.06 02:31) [25]

Это я так, поворчать просто захотелось :-)


Германн   (2006-05-07 02:31:00) [2]


> DrPass ©   (07.05.06 02:21) [24]
>
> /*извините, что вмешиваюсь в разговор умных людей*/
> ...но "время работы приложения" всеми нормальными людьми
> (не "суперпрофессиональными" программистами) употребляется
> в значении "время, которое прошло с момента запуска приложения",
>  и не надо его путать с "процессорным временем". А поумничать
> тут действительно любят. Самое интересное, что народ прекрасно
> понимает, что имел в виду спрашивающий человек. Но отказать
> себе в удовольствии повыпендриваться, увы, не может практически
> никто. Это так, злой оффтопик о плохом поведении на форуме
> :-)


Заметь пожалуйста, что сам ответ на вопрос ограничивается ответами с [1] по [4].
Автор сабжа исчез после [3], так что уж не обессудь! Ведь далее обсуждался не вопрос автора, а некоторые спорные заявления прочих субъектов.


DrPass   (2006-05-07 02:21:00) [3]

/*извините, что вмешиваюсь в разговор умных людей*/
...но "время работы приложения" всеми нормальными людьми (не "суперпрофессиональными" программистами) употребляется в значении "время, которое прошло с момента запуска приложения", и не надо его путать с "процессорным временем". А поумничать тут действительно любят. Самое интересное, что народ прекрасно понимает, чтоимел в виду спрашивающий человек. Но отказать себе в удовольствии повыпендриваться, увы, не может практически никто. Это так, злой оффтопик о плохом поведении на форуме :-)


Германн   (2006-05-07 02:06:00) [4]


> Anatoly Podgoretsky ©   (05.05.06 15:58) [20]
>
> Кстати а откуда взялось время работы программы?
> Вопрос то "Нужно знать сколько прошло милисекунд с момента
> запуска программы.", вроде как одназначно?
> <Цитата>
> DevilDevil ©   (06.05.06 18:45) [21]
>
> Юрий Зотов ©   (05.05.06 01:01) [15]
> Германн ©   (05.05.06 03:34) [17]
> Anatoly Podgoretsky ©   (05.05.06 15:58) [20]
> no comments


Ой врёшь!
"откуда взялось время работы программы" - так из твоего поста[5]:
// функция возвращает время работы приложения в миллисекундах
function GetWorkTime : integer;
Сам расжёг костёр - сам и туши! :-)


Anatoly Podgoretsky   (2006-05-06 20:38:00) [5]

А говоришь - no comments


DevilDevil   (2006-05-06 18:45:00) [6]

Sergio77   (05.05.06 04:01) [18]
Совершенно верно ;)

Юрий Зотов ©   (05.05.06 01:01) [15]
Германн ©   (05.05.06 03:34) [17]
Anatoly Podgoretsky ©   (05.05.06 15:58) [20]

no comments
Хотя, нет... Поумничать вы любите


Anatoly Podgoretsky   (2006-05-05 15:58:00) [7]

Кстати а откуда взялось время работы программы?
Вопрос то "Нужно знать сколько прошло милисекунд с момента запуска программы.", вроде как одназначно?


Anatoly Podgoretsky   (2006-05-05 15:56:00) [8]

Юрий Зотов ©   (05.05.06 01:01) [15]
Именно не считая Вас ламером в программировании, я и не стал расписывать подробнее совершенно очевидные для НЕламеров вещи. Полагая, что для Вас они тоже совершенно очевидны.

Их расписал begin...end в [13].


Намекаешь, что посчитал ламером? Ну так выходит согласно логики.


Sergio77   (2006-05-05 04:01:00) [9]

> DevilDevil
если не ошибаюсь, то b - a;)


Германн   (2006-05-05 03:34:00) [10]


> Германн ©   (05.05.06 02:47) [16]


Пардон, забыл "заключающий" смайлик.


Германн   (2006-05-05 02:47:00) [11]


> Юрий Зотов ©   (05.05.06 01:01) [15]
>
> > Германн ©   (04.05.06 02:40) [11]
> > Ну ошибся Юрий. Время-то позднее было.
>
> Второе - да. А первое - эт вряд ли, как говорил тов. Сухов.
>

Ну а первое - это действительно "врядли"! "Специалист", вроде тебя, никогда и ни за что, не позволит подловить себя! :-)
Как и т. Сухов. :-)
Тут главное (на форуме)  - выдержать "нужную" паузу.


Юрий Зотов   (2006-05-05 01:01:00) [12]

> Германн ©   (04.05.06 02:40) [11]
> Ну ошибся Юрий. Время-то позднее было.

Второе - да. А первое - эт вряд ли, как говорил тов. Сухов.

> DevilDevil ©   (03.05.06 20:33) [7]
> не думаю, что я ламер в программировании...
> будьте добры, распишите поподробнее

Именно не считая Вас ламером в программировании, я и не стал расписывать подробнее совершенно очевидные для НЕламеров вещи. Полагая, что для Вас они тоже совершенно очевидны.

Их расписал begin...end в [13]. Остается только повторить, что разница между двумя вызовами GetTickCount дает время работы системы, но о реальном времени работы приложенияне говорит ничего.

К тому же, при использовании GetTickCount надо учитывать еще и возможный переход через максимум для DWORD.


DevilDevil   (2006-05-04 17:07:00) [13]

begin...end ©   (04.05.06 08:32) [13]
Вот это я считаю ответом!

НО, мой вариант попроще в понимании, достаточно точен и эффективен - точнее работы с TDateTime, как предлагал Zeqfreed. Собственно, и игры пишутся используя GetTickCount

Честно говоря, хотелось бы услышать мнение автора вопроса


begin...end   (2006-05-04 08:32:00) [14]

> DevilDevil ©   (03.05.06 23:31) [10]

>> Твоя ф-ция возвратит с некоторой точностью количество
>> миллисекунд, прошедших между вызовами GetTickCount, и ничего
>> иного.

> не скажу, что ты неправ. Именно это количество миллисекунд
> и является временем работы приложения.

Пришли как-то в 8 утра на работу два грузчика -- Вася и Федя. А ушли -- в 5 вечера.

Вася за это время разгрузил три грузовика, а Федя -- ни одного. Потому как не работалось Феде после вчерашнего...

По-Вашему, получается, что Вася и Федя РАБОТАЛИ одинаковое количество времени. А по-моему, получается, что Вася работал 9 часов минус перекуры и перерывы, а Федя не работал вовсе.

Так же и с программами. Есть время, которое прошло с момента создания процесса, а есть время его работы. И это совершенно разные вещи, потому что система выделяет процессорное время не только Вашей программе. И поэтому не всё то время, что прошло с момента запуска программы, она (программа) именно работает.

Время, прошедшее с момента старта процесса, можно вычислить, если из текущего времени вычесть время его создания. А время его создания можно получить, вызвав GetProcessTimes (см. параметр lpCreationTime). Эта же функция сообщает и время работы процесса -- user- и kernel-time. См. справку.


Германн   (2006-05-04 02:44:00) [15]

2 DevilDevil ©   (03.05.06 23:31) [10]
Но не откажись и заметить, что сабж невозможно решить средствами Windows!


Германн   (2006-05-04 02:40:00) [16]


> DevilDevil ©   (03.05.06 23:31) [10]
>
> Возможно, это покажется слишком резко, но подругому выразить
> пока не могу: "Похоже, сохраняется тенденция ПОУМНИЧАТЬ"
>
Не показалось, поскольку не видел тенденции.

Ну ошибся Юрий. Время-то позднее было. :-(


DevilDevil   (2006-05-03 23:31:00) [17]

Возможно, это покажется слишком резко, но подругому выразить пока не могу: "Похоже, сохраняется тенденция ПОУМНИЧАТЬ"

> GanibalLector ©   (03.05.06 20:43) [8]
ну и что? Всё равно, лучшее решение врядли существует. У тебя иное мнение?

> Zeqfreed ©   (03.05.06 21:51) [9]
> Твоя ф-ция возвратит с некоторой точностью количество миллисекунд, прошедших между вызовами GetTickCount, и ничего иного.

не скажу, что ты неправ. Именно это количество миллисекунд и является временем работы приложения. Не веришь? Тогда для почитай хотя бы справку по функции GetTickCount. Там будет чёрным по белому, что функция возвращает количество миллисекунд, прошедших с начала загрузки винды...
Вспоминаем 6йкласс. На отрезке времени сначало произошло событие a(StartTickCount), спустя время произошло событие b. Вопрос: как определить, сколько времени прошло между aи b? Правильно, ребята: a - b...
А если бы ты написал хоть одно более-менее анимационное приложение, или почитал литературу для начинающих, то понял бы, что использование GetTickCount для точного определения временных промежутков - ОПТИМАЛЬНО, и не умничал направо-налево...

В общем, давайте жить дружно, выражаться не резко и максимально понятно выражать свои мысли

С Уважением


Zeqfreed   (2006-05-03 21:51:00) [18]

[7] DevilDevil ©   (03.05.06 20:33)
Твоя ф-ция возвратит с некоторой точностью количество миллисекунд, прошедших между вызовами GetTickCount, и ничего иного.


GanibalLector   (2006-05-03 20:43:00) [19]

2 DevilDevil ©   (03.05.06 20:33) [7]
Все дело в том,что у процессов и потоков есть ПРИОРИТЕТЫ. За подробностями к дяде Рихтеру.


DevilDevil   (2006-05-03 20:33:00) [20]

Юрий Зотов ©   (01.05.06 02:11) [6]
ммм... ДА... Случай непростой...

> ЭТАфункция возвращает время работы СИСТЕМЫс момента старта приложения.

Юрий, честно говоря, не думаю, что я ламер в программировании... Позволю себе предположить, что если приложение не получает процессорного времени, то не происходит события TForm.OnCreate...
Ну и обращения к функции( GetWorkTime) тоже не будет, если приложение не получило процессорного времени...
В остальных случаях всё должно работать верно. НО всё с точностью до 10 миллисекунд

И думаю так. Если не прав - уж извиняйте, но, будьте добры, распишите поподробнее


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо