Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2008, 14:05   #11
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Смотрите здесь http://www.programmersforum.ru/showthread.php?t=12132
Я даже делал программу для сравнения различных таймеров http://www.programmersforum.ru/attac...9&d=1199691941
_Dmitry вне форума Ответить с цитированием
Старый 06.02.2008, 14:16   #12
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Спасибо за пример. А в чем измеряется время в мультимедийном таймере, почему он убегает вперед?
Sibedir вне форума Ответить с цитированием
Старый 06.02.2008, 14:18   #13
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Он-то как раз и не убегает вперед, это другие тормозят. Проверьте по часам.
_Dmitry вне форума Ответить с цитированием
Старый 06.02.2008, 14:29   #14
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

А почему? Метод делфи, я так понимаю, пользуется системным, поэтому они рядышком, а системный наверное ведет отсчет времени от КОНЦА предидущей остановки, а надо от НАЧАЛА. Поэтому работа по обработке события тармозит отчет времени. Это получается последовательное выполнение процедуры, а в мультимедийном таймере процедура может начать выполнятся не дождавшись завершения предидущего запуска. Но тогда сразу возникает вопрос, а что случится, если я к мультимедийному событию времени прикручу навороченную процедуру а время задержки меджу вызовами назначу маленькое. У меня тогда комп зависнит что-ли.
Правильно я понимаю, или нет?
Sibedir вне форума Ответить с цитированием
Старый 06.02.2008, 14:34   #15
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Выдержки из темы http://www.programmersforum.ru/showthread.php?t=12132

Системный таймер: Если обработчик таймера не успевает закончить все действия в установленный интервал, то последующие вызовы этого обработчика становятся в очередь. Это приводит к тому, что на разных компьютерах приложение работает с разной скоростью. Сама же CallBack функция вызывается в контексте основного потока.
Мультимедийный таймер: Если обработчик таймера не успевает закончить все действия в установленный интервал, то последующие вызовы накапливаться не будут. Сама же CallBack функция вызывается в контексте отдельного потока.

Если обработчик таймера не успевает закончить все действия в установленный интервал, то, скорее всего, следующий вызов обработчика в мультимедийном таймере просто не будет выполнен, а в системном - встанет в очередь. Хотя в этом уверенности нет, нужно тестировать или читать тех. описание.
_Dmitry вне форума Ответить с цитированием
Старый 06.02.2008, 14:35   #16
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

<уже ответили>
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 06.02.2008, 14:43   #17
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Если обработчик таймера не успевает закончить все действия в установленный интервал, то последующие вызовы накапливаться не будут. Сама же CallBack функция вызывается в контексте отдельного потока.

Если обработчик таймера не успевает закончить все действия в установленный интервал, то, скорее всего, следующий вызов обработчика в мультимедийном таймере просто не будет выполнен, а в системном - встанет в очередь. Хотя в этом уверенности нет, нужно тестировать или читать тех. описание.
Судя по вашему примеру, если бы следующий вызов обработчика в мультимедийном таймере не выполнялся, то и счетчик бы не увеличивался. Я это проверил. Поставил в процедуре Sleep (500). Так и есть, счетчик стал прибалятся на один каждые пол секунды.
Sibedir вне форума Ответить с цитированием
Старый 06.02.2008, 14:53   #18
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Значит предположение верное. Мультимедийный таймер, в основном, используется в различных проигрывателях. Если при показе фильма некоторые кадры будут пропущены, то это не скажется на общем восприятии и не будет тормозов.
_Dmitry вне форума Ответить с цитированием
Старый 06.02.2008, 15:56   #19
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Допустим у меня три процедуры:

procedure proc1;
begin
showMessage('Start of PROC1');
// Здесь должно быть чтото вроде того, что я хочу...
showMessage('End of PROC1');
end;

procedure proc2;
begin
showMessage('Start of PROC2');
// Здесь должно быть чтото вроде того, что я хочу...
showMessage('End of PROC2');
end;

procedure tMain_form.button1Click(sender: tObject);
begin
pror1;
proc2;
end;

Мне нужно, чтоб вначали было "Start of PROC1", потом "Start of PROC2",
затем "End of PROC1" и "End of PROC2"...
Altera вне форума Ответить с цитированием
Старый 06.02.2008, 16:10   #20
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

В разные потоки их и дело с концом. При чем тут таймер?
B_N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Timer... Teleport Общие вопросы Delphi 13 14.09.2011 17:02
timer ZYRGiX Помощь студентам 3 21.07.2008 15:15
Timer... Roof Общие вопросы Delphi 11 11.10.2007 12:57
Timer PAVEL315 Компоненты Delphi 16 20.12.2006 19:47
timer Toxa Компоненты Delphi 6 06.12.2006 06:58