Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Быстрый секундомер 
:(
    Опции темы
drkot
Дата 6.8.2014, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(MrDmitry @  5.8.2014,  22:50 Найти цитируемый пост)
использование потока

вариант хороший и может даже лучший, но весь вопрос "как?" Стену нужно строить так, чтоб подпирать... или как говаривали классики "главное леса не убирайте пока обои не поклеите"...

Это сообщение отредактировал(а) drkot - 6.8.2014, 01:25


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Delvish
Дата 6.8.2014, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


oO
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 13.12.2006

Репутация: 1
Всего: 4



Цитата(drkot @  5.8.2014,  18:54 Найти цитируемый пост)
ни каких нападений.просто зачем лезть (давать совет лезть) в неведомые дебри... лучше решать задачу теми средствами которые знаешь, меньше шансов наломать дров... имхо

Не сударь, так мусье smile Я накидал первый пришедший в голову код и, само собой, скопипастил из IDE, не заморачиваясь что там по нажатию Ctrl+Shift+C среда создала inherited или же что переменную я не объявил в локальных. Просто быстрый код и ничего более. Кстати, вот Alexeis вполне внятно объяснил почему в данном конкретном случае такой код является не очень хорошим и лучше было бы обрабатывать WM.
...Помнится, когда я был курсе на 4м и изучал предмет Автоматика, был дико поражен тем, КАК можно задачу за 2й класс по математике, где из двух труб вода наливается в бассейн, а из третьей выливается, извратить до ужасного вида дифференциальных уравнений второго порядка. Так и тут, простую задачу чуть ли не через ассемблерные вставки решаем smile
PM MAIL   Вверх
PointerToNil
Дата 6.8.2014, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 17.6.2013

Репутация: 3
Всего: 6



Цитата(MrDmitry @  5.8.2014,  21:34 Найти цитируемый пост)
я поставил параметр interval компонента timer на 1, все работает так как нужно, за исключением того что мне нужно чтоб время секундомера бежало быстрее чем 1мс
1) ты приращиваешь строго по 1 секунде? ну так приращивай больше, ускорять таймер смысла нет никакого
2) разрешение таймера по дефолту 15.6 ms, так что твоя "1" (и любое число до 15 включительно) на самом деле = 15.6
3) ускорять нет смысла, т.к. длительность 1 кадра при стандартной развертке 60 кадров в секунду = 1000ms/60 = 16.666 ms, а больше 60 кадров ты хоть как не сможешь на экране увидеть (хоть скоростной киносъемкой его снимай) 


Это сообщение отредактировал(а) PointerToNil - 6.8.2014, 13:50
PM MAIL   Вверх
drkot
Дата 6.8.2014, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(Delvish @  6.8.2014,  09:09 Найти цитируемый пост)
до ужасного вида дифференциальных уравнений второго порядка

гыы... простых задач не бывает.

VCL это мало динамичное средство, так как вся работа по "принуждению" вынесена в ядро, а программист пишет только бизнес логику. Для самых тяжелых компонентов сделала возможность на время изменения отключить перерисовку. 
Отсюда вывод: динамичная перерисовка в VCL возможна только при перекрытии в наследнике.

решение с потоком может выглядеть следующим образом:
поток в цикле вызывает Invalidate для компонента
и ждет на waitforobject(ивент) // ивент с автосбросом
также можно добавить небольшой sleep которые определит частоту перерисовки

функция перерисовки (например в TPaintBox)
вычисляет значение таймера
рисует значение таймера
дергает ивент

в результате никакого мерцания + быстрая перерисовка
чтобы создать эффект "размытости" можно рисовать старое значение в виде тени (более светлым)
тогда при низкой скорости обновления (5-10 кадров) можно достичь ощущения "размытости"

Добавлено через 1 минуту и 34 секунды
PointerToNil, о вот и капитан очевидность smile


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0441 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.