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

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

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

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


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

 





- Текстовая версия 13.09.2025 3:43
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name