![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
Soxatyi |
![]()
Сообщение
#1
|
Гость ![]() |
Такая проблема. Необходимо вставить паузу в цикл, т.е. если во время выполнения цикла я нажал любую клавишу, то программа останавливается на 2 сек., а потом цикл продолжается. Приведу простой ппример:
program delay_key; Здесь такая бага: после одного нажатия клавиши программа дальше всегда вставляет паузу, т.е. сменив значение keypressed на TRUE, она при следующем проходе цикла так и оставляет это значение. Нужно, чтобы от одного нажатия пауза вставлялась один раз. Если я потом опять нажал на кнопку, то пауза опять вставится, и т.д. По логике, в if..then после длинного delay надо впихнуть что-то вроде keypressed:=FALSE (ибо keypressed суть boolean), но выдается ошибка 122. Что делать? |
![]() ![]() |
Guest |
![]()
Сообщение
#2
|
Гость ![]() |
В Делфи это конечно не прокатит, так как данный метод расчитан чисто для ДОС. Все дело в том, что именно по этим адресам ДОС хранит адрес начала и конца буфера клавиатуры, где их хранит Windows, мне неизвестно. Этот метод не пройдет в Делфи потому, что все приложения в ней компилируются в защищенном режиме (даже консольные), а там уже другая модель памяти и т.д. Аналогично, ты не сможешь записать в Делфи что-то типа:
xor ax, ax |
![]() ![]() |
![]() |
Текстовая версия | 2.08.2025 15:01 |