Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2008, 18:47   #1
Porkman
 
Регистрация: 13.12.2008
Сообщений: 3
Восклицание процедура, которая будет что-то делать пока зажата клавиша пробел.

помогите написать процедуру, которая будет что-то делать пока зажата клавиша пробел.

вот что я имею:

var c:char;

procedure abc;
while {зажата клавиша пробел} do
begin
write('эээ');
end;
end;

begin
c:=ReadKey;
c:=ord(c);
abc;
readln;
end.


что надо написать вместо {зажата клавиша пробел}? заранее спасибо.
Porkman вне форума Ответить с цитированием
Старый 13.12.2008, 19:00   #2
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

Код:
while readkey=#32 do
  write('Зажат пробел');
Викдон вне форума Ответить с цитированием
Старый 13.12.2008, 21:33   #3
Porkman
 
Регистрация: 13.12.2008
Сообщений: 3
По умолчанию

Спасибо.
А если так.. Мне нужно чтоб при нажатии клавиши пробел комп пищал а при её отпускании переставал.

Если вместо "write('Зажат пробел');" вставить "sound(round(100));" то при отпускании пробела звук будет продолжаться.. для этого мне и нужно отследить когда кнопка отпускается, чтоб использовать "nosound;"..

Очень надо решить эту задачу. Помогите пожалуйста!

Последний раз редактировалось Porkman; 13.12.2008 в 22:36. Причина: просто
Porkman вне форума Ответить с цитированием
Старый 13.12.2008, 23:05   #4
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Дык у клавиатуры есть такая вищичка как буффер, то при "Пищании" паскаль не успевает выгребать буфер кнопок т.к. beep загружает его. После отпускания он догребает буфер а потом прекращается. И даже если ты уже не тыкаешь на заветный пробел - в буфере всёравно остаются данные и Паскаль не успокоиться пока не сожрёт весь буфер. Причём чем дольше держать - тем дольше продолжает пищать после стопа. Так?

Как вариант попробуй подставить вместо sound(round(100)) sound(round(10)); Т.е. длина пика меньше и он должен успевать.
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг

Последний раз редактировалось Dj_smart; 13.12.2008 в 23:09.
Dj_smart вне форума Ответить с цитированием
Старый 14.12.2008, 03:37   #5
Porkman
 
Регистрация: 13.12.2008
Сообщений: 3
По умолчанию

дело не в этом.
"sound(round(100));" - 100 - это частота колебания, то есть нота.

Функция
uses crt;
begin
sound(round(100));
end.

включит пищалку.

мне нужно просто отследить когда клавиша отжимается и вставить
nosound;

Как же мне это сделать?)
Porkman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Все висит пока выполняется процедура XPAiN Общие вопросы Delphi 3 07.05.2008 15:03
Как создать обратную функцию, которая из уникального номера будет возвращать строку? SkAndrew Общие вопросы Delphi 8 06.04.2008 21:10
процедура, которая вычисляет объем шара motaro Паскаль, Turbo Pascal, PascalABC.NET 2 21.01.2008 19:22