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
сообщение 11.10.2005 1:58
Сообщение #2


Гость






Guest, я прекрасно знаю, что это не пойдет в Дельфи (и почему оно там не пойдет - тоже), поэтому и говорю, что не стоит пользоваться тем, что рассчитано на какой-то конкретный компилятор, а вдруг придется перейти на другой? ;)

Так как насчет примера некорректной работы моего метода очистки буфера клавиатуры?
 К началу страницы 
+ Ответить 
Guest
сообщение 15.10.2005 18:38
Сообщение #3


Гость






Цитата(volvo @ 11.10.2005 1:58)
GuestТак как насчет примера некорректной работы моего метода очистки буфера клавиатуры?
Прошу прощения, что не мог ответить ранее, был в поездке. Твой вариант некорректен в том случае, когда пользователь нажал и удерживает клавишу, в твоем случае буфер просто не будет успевать очищаться, в моем - да.
 К началу страницы 
+ Ответить 

Сообщений в этой теме
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:13
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"