Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

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

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


           Интенсив по Python 3-5 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
           Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

Ответ
 
Опции темы Поиск в этой теме
Старый 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 вне форума Ответить с цитированием
Ответ

          Оплата за обучение в Kata Academy только после твоего трудоустройства в IT!
          Начни карьеру Middle Java-разработчика, подробнее на сайте академии, ссылка - https://clck.ru/fCqwP

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Все висит пока выполняется процедура 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