Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 11.01.2016
Сообщений: 17
1

Что не так с обработкой клавиш?

03.11.2017, 03:47. Показов 588. Ответов 1

Author24 — интернет-сервис помощи студентам
Здравствуйте! Объясните дураку что не так, а то уже совсем отчаялся, не могу сделать так что-бы функция GetKeyPressed() работала :с


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
uses graphabc;
 
var
  GetKeyPressed: boolean;
  a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z: boolean;
 
type
  Input = class
    
    class function GetKeyPressed(Key: string): boolean;
    begin
      GetKeyPressed := false;
      if (a = true) and (Key = 'a') then GetKeyPressed := true;
    end;
  end;
 
procedure KeyIsDown(DownKey: integer);
begin
  if DownKey = 65 then a := true;
end;
 
procedure KeyIsUp(UpKey: integer);
begin
  if UpKey = 65 then a := false;
end;
 
begin
  OnKeyDown := KeyIsDown;
  OnKeyUp := KeyIsUp;
  if Input.GetKeyPressed('a') then TextOut(0, 0, 'Key A is pressed;');
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.11.2017, 03:47
Ответы с готовыми решениями:

Не понимаю что не так с обработкой формы обратной связи
Всем привет. Если что-то не так, заранее прошу извинить.Я не в курсе есть ли на самом деле такие...

Проблема с обработкой клавиш
Здравствуйте! Накидал тут тетрис, построенный на ООП (исключительно для практики). Сам-то тетрис...

Отправка нажатий клавиш в Radmin с обработкой ошибок
Всем привет. Пищу программу на C#. Надо запустить radmin. Для этого я воспользовался скриптом....

Сделать так, что бы форма реагировала на нажатие клавиш даже если она не активна
Как заставить форму реагировать на нажатие клавиш, при том что она не активна (свернута). Ну...

1
5079 / 2651 / 2349
Регистрация: 10.12.2014
Сообщений: 10,028
03.11.2017, 06:28 2
У вас основная программа успевает завершить работу до того, как начнётся поступление данных из обработчиков.
Это легко увидеть, добавив в программу всего одну строку:
Pascal
31
  TextOut(0, 20, 'The End.');
Ну, а чтобы основная программа не завершалась и выполняла проверки, нужно её зациклить…
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
uses
  GraphABC;
 
type
  Input = class
    Key : Char;
    Pressed : Boolean;
    
    constructor (Key : Char);
    begin
      Self.Key := Key; Pressed := False;
    end;
    
    procedure Down := Pressed := True;
    procedure Up   := Pressed := False;
    
    function GetKey := Key;
    function GetKeyPressed := Pressed;
    
    procedure Status(X, Y : Integer) :=
      TextOut(X, Y, 'Key "' + Key + '" is ' + (Not Pressed?'not ':'') + 'pressed.');
  end;
 
var KeyA := New Input('a');
 
procedure KeyIsDown(DownKey: integer);
begin
  case DownKey of
    65 : KeyA.Down;
  end;
end;
 
procedure KeyIsUp(UpKey: integer);
begin
  case UpKey of
    65 : KeyA.Up;
  end;
end;
 
begin
  OnKeyDown := KeyIsDown;
  OnKeyUp := KeyIsUp;
  repeat
    KeyA.Status(0, 0);
    Sleep(250);
  until False;
end.
0
03.11.2017, 06:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.11.2017, 06:28
Помогаю со студенческими работами здесь

Что не так с кодом? ( пытаюсь понять, что не так? )
Есть исходный код. Hook, работает хорошо, но есть минус огромный - перестаёт писать в лог, при...

Не работает комбинация клавиш Ctrl + Num: Pad, 1,2,3 и так далее
Короче говоря, через Fn+Ins включаются клавиши Num Lock вместо некоторых на клавиатуре (где буквы и...

И так, что не так с моим запросом на добавление записи в таблицу?
$sql = 'INSERT INTO product ' . '(name, code, price, category_id, brand,...

Как сделать так что я мог умножать не на два числа а на 3,4,5 и так далее?
Вот код: #include <iostream> #include <conio.h> using namespace std; int main(){ float...

Что в коде ни так? while не работает так, как ожидаю
Написанный код, как я думаю, должен выдавать цифры от 0 до 1000, столбиком. Но выдает начиная от...

сегодня так можно сказать праздник так что...
простите меня за все пожалуйста!!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru