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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2011, 15:59   #1
shumsheec
Пользователь
 
Регистрация: 10.02.2009
Сообщений: 33
По умолчанию Вопрос по mmTimer

Здравствуйте!
Нужно вызывать процедуру раз в 50 мс. Нашёл и использовал mmTimer. Но возникла проблема. Если в процедуре обработки его срабатывания делать что-то короткое, типа
Код:
  MainForm.Edit5.Text := IntToStr(StrToInt(MainForm.Edit5.Text) + 1);
То всё без проблем, работает отлично. Но у меня процедура обработки довольно громоздкая. В результате после запуска таймера очень быстро (через несколько секунд) прога вылетает, причём пишет каждый раз разные ошибки - неправильный доступ к памяти, неправильная работа с указателем, невалидное изображение... Отключаешь таймер, либо убираешь из процедуры почти всё - полёт нормальный. Можно ли как-то выйти из этого положения, например по срабатыванию таймера заставлять срабатывание какого-нибудь ивента у какого-нибудь компонента, и по нему уже отрабатывать свою процедуру (процедура, если запускается например по таймеру дельфийскому, работает отлично).
Либо подскажите ещё какое-нибудь решение. Читал, что в ммтаймере нужно проводить как можно меньше времени, но как этого достичь, не знаю. Раньше я запускал процедуру внешним микроконтроллером, прога через него общалась с внешним миром. Теперь общение идёт через сеть, хочется убрать лишние сущности.
Спасибо заранее.

upd в ммтаймере этот же инкремент текстедита из примера и оставил, процедура вызывается по изменению значения едита. Пока полёт нормальный...

Последний раз редактировалось shumsheec; 25.07.2011 в 16:10. Причина: вроде решено...
shumsheec вне форума Ответить с цитированием
Старый 25.07.2011, 18:26   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Multimedia Timer работает в своём отдельном потоке, следовательно, работать с VCL напрямую из него нельзя.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по mySQL + Вопрос по RichEdit HTL Общие вопросы Delphi 4 01.01.2010 20:22
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
вопрос по сокетам и общение как в ICQ.Сложный вопрос... Руслантус Общие вопросы C/C++ 2 12.08.2008 21:10
Вопрос Mitron О форуме и сайтах клуба 1 11.02.2008 06:26