![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Собственно, можно ли сделать подобие таймера в Паскале (может с Ассемблером), чтоб каждые две секунды выполнялось какое-нибудь действие, а в промежутке пользователь мог клацать по клавиатуре и мышке?
-------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| S.A.P. |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 2 Всего: 71 |
В паскале с таймерами полный гемор. Я как то делал такое, только исходников не осталось.
Сначала узнавай в таблице векторов прерываний адрес текущей функции прерывания таймера:
потом изменяй таблицу прерываний
NеwTimer - это заранее определенная процедура
И усё, вот и таймер. Только по окончании работы восстанови таблицу векторов прерываний:
Не забудь подключить CRT и DOS Не проверял, но работать вроде должно. Это сообщение отредактировал(а) Perchilla - 25.9.2004, 02:48 |
||||||||
|
|||||||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Perchilla Получается, NewTimer - это процедура типа события OnTimer?
И еще:
это когда? чет я не понял... А ты не мог бы на примере? Если не сложно... -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| S.A.P. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 2 Всего: 71 |
Пример не могу, потому что работать не будет. Паскаль я уже порядком подзабыл. Просто выделил для тебя основные моменты:
1. Наличие обработчика прерываний: procedure NewTimer; interrupt; 2. Сохранение таблицы векторов прерываний GetIntVec($1C,LastTimer); 3. Изменение таблицы векторов прерываний: SetIntVec($1C,addr(NewTimer)); 4. Восстановление таблицы векторов прерываний: SetIntVec($1C,LastTimer); $1C соответствует прерыванию от таймера; Тут в обработчике еще должна быть фильтрация прерываний, чтобы не каждое прерывание обрабатывалось, но это я уже не помню. |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Ну ладно. Спасибо. Буду разбираться...
-------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |