IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> Keypressed в цикле, Как сменить значение keypressed
Soxatyi
сообщение 9.10.2005 13:25
Сообщение #1


Гость






Такая проблема. Необходимо вставить паузу в цикл, т.е. если во время выполнения цикла я нажал любую клавишу, то программа останавливается на 2 сек., а потом цикл продолжается. Приведу простой ппример:
program delay_key;
var x:integer;
begin
x:=0;
repeat;
x:=x+1;
writeln(x);
delay(1000);
if keypressed then delay(10000);
until(x=30);
readln;
end.

Здесь такая бага: после одного нажатия клавиши программа дальше всегда вставляет паузу, т.е. сменив значение keypressed на TRUE, она при следующем проходе цикла так и оставляет это значение. Нужно, чтобы от одного нажатия пауза вставлялась один раз. Если я потом опять нажал на кнопку, то пауза опять вставится, и т.д.
По логике, в if..then после длинного delay надо впихнуть что-то вроде keypressed:=FALSE (ибо keypressed суть boolean), но выдается ошибка 122.
Что делать?
 К началу страницы 
+ Ответить 
 
Closed Topic Открыть новую тему 
Ответов
volvo
сообщение 9.10.2005 13:30
Сообщение #2


Гость






Цитата
По логике, в if..then после длинного delay надо впихнуть что-то вроде keypressed:=FALSE (ибо keypressed суть boolean), но выдается ошибка 122.
Ага, прямо сейчас Паскаль даст тебе присвоить функции логическое значение... KeyPressed это все же функция ...

Цитата
Что делать?
После Delay чистить буфер клавиатуры:
repeat;
x:=x+1;
writeln(x);
delay(1000);
if keypressed then delay(10000);
while keypressed do readkey; { чистим буфер... }
until(x=30);

... и при следующем вызове KeyPressed она проверит буфер, он пуст и KeyPressed вернет значение False...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Soxatyi   Keypressed в цикле   9.10.2005 13:25
volvo   Ага, прямо сейчас Паскаль даст тебе присвоить функ...   9.10.2005 13:30
Soxatyi   Спасибо огромное. )   9.10.2005 14:38
Romtek   Мне по душе больше такой вариант: uses crt; var x...   9.10.2005 19:43
Guest   Вариант while keypressed do readkey; Невсегда ра...   10.10.2005 17:46
volvo   Guest, приведи пример, КОГДА именно while keypress...   10.10.2005 18:19
Guest   В Делфи это конечно не прокатит, так как данный ме...   10.10.2005 21:11
volvo   Guest, я прекрасно знаю, что это не пойдет в Дельф...   11.10.2005 1:58
Guest   Прошу прощения, что не мог ответить ранее, был в п...   15.10.2005 18:38
volvo   Да твой вариант вообще не компилится на многих ко...   15.10.2005 18:47
pasman   а мона так: program delay_key; var x:integer; ...   15.10.2005 17:49
Guest   Мой вариант компилится только на 16-ти битных комп...   15.10.2005 20:19
volvo   Тему-то, на самом деле, поднимаешь ты. Я могу толь...   15.10.2005 20:56
Guest   Смеяться ты можешь, когда хочешь, лишь была причи...   16.10.2005 16:59
hiv   2Guest: А я тоже смеюсь :D Если считаешь себя прав...   17.10.2005 9:51
Guest   Без комментариев... Если есть, что сказать по де...   17.10.2005 17:34
volvo   Кусаться будешь в другом месте. Тебе уже все сказа...   17.10.2005 19:38


Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 2.08.2025 15:15
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"