Считывания клавиш для графиского режима

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Снег Север писал(а):Чем маяться херней с этим говном мамонта, лучше бы ребята лазарь осваивали...

Ничего не получиться. У них там в универе строгая, не допускающая возражений учебная программа... :-)
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Убери лишние RestoreSrtMode. Правильный

Код: Выделить всё

until rk=#27;
    restorecrtmode;
    end;

Угу... проблему вижу... судя по всему, у тебя просто не переключилась консоль на графику.

Setgraphmode(getgraphmode) лучше заменить на setgraphmode(4 ), тогда будет меньше вылетов. Цифру подбери сам.
Единственное, что не могу понять как избавиться от дополнительного окна. Судя по всему, это особенность оси.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Лекс Айрин писал(а):Единственное, что не могу понять как избавиться от дополнительного окна.

В своё время над этим ломали головы лучшие умы конца 90-ых и начала 2000-х годов. Я не себя имею в виду... :-)
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Vadim, ну так это же имитация доса, так что вполне вероятно, что в нормальном досе все будет нормально.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Лекс Айрин писал(а):так что вполне вероятно, что в нормальном досе все будет нормально.

Мало того, так оно и было, я ещё помню те ветхозаветные времена... :-)
Проблема тут в другом - таки где мы будем иметь нормальный эмэсдос? Вы делаете меня смеяться... :-D
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Vadim писал(а):Мало того, так оно и было, я ещё помню те ветхозаветные времена... :-)


Я сам помню)))
Vadim писал(а):Проблема тут в другом - таки где мы будем иметь нормальный эмэсдос? Вы делаете меня смеяться... :-D

Если только FreeDos... говорят таки, что жив курилка.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Лекс Айрин писал(а):Если только FreeDos...

Кстати, хорошая идея... Можно попробовать такой код в DosBox запустить...
Vladosikman
незнакомец
Сообщения: 7
Зарегистрирован: 07.12.2018 21:42:17

Сообщение Vladosikman »

SSerge когда фокус стоит на консольном окне, график обрабатывается, как только активируешь графическое ничего не работает.

Добавлено спустя 2 минуты 43 секунды:
Хах, да, учусь.
Стоит Винда 10. Недавно читал, что как то считывание можно сделать через WinApi. Не знаете?

Добавлено спустя 6 минут:
Хах. да, учусь.
Винда стоит 10. Сегодня читал, что считывание клавиш можно сделать как то через Winapi. Кто-нибудь знает, что это?
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Vladosikman писал(а):Кто-нибудь знает, что это?

Например вот кто-то делал модуль CRT на основе WinAPI. Полюбопытствуйте:
https://sourceforge.net/projects/delphi ... win32-x86/

Вот здесь, на примере функции ClrScr, в двух словах показывается, как она реализуется на WinAPI:
http://pcfu.ru/perenosim-programmy-s-tu ... na-delphi/
Vladosikman
незнакомец
Сообщения: 7
Зарегистрирован: 07.12.2018 21:42:17

Сообщение Vladosikman »

А можно ли как-нибудь, в середине программы, отключить действие одного модуля, и подключить другой
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Vladosikman, нет. Они подключаются при компиляции.
Можно лишь выбирать из какого модуля использовать функции в каждом месте... но это очень муторно.
Через спецификатор модуля. Например -- Crt.нужная_функция_или_переменная
mig-31
постоялец
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48

Сообщение mig-31 »

Очень старая технология. В Windows консоль очень убогая, ее фактически выпилили. В Linux для текстовых приложений используют ncurses.В fpc есть модуль ncurses.
Перейдите на Lazarus, как вам все советуют и не морочте голову.

Нашел старый код TP7, который у меня компилился и запускался под Linux с прямым доступом к DAQ карте. Так в нем обработка нажатий клавиш осуществляется с помощью функции ReadKey https://www.freepascal.org/docs-html/rtl/crt/readkey.html.

Код: Выделить всё

var
CH: Char;
begin
   //init graphic mode
 
   repeat
     CH:= ReadKey;
     //do something
   until CH in ['k', 'K'];

  //close graphic mode
end;
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

mig-31, он в тексте программы использовал ReadKey.
mig-31
постоялец
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48

Сообщение mig-31 »

Лекс Айрин писал(а):mig-31, он в тексте программы использовал ReadKey.

Ну тогда в Win10 еще что-то отрубили
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

mig-31, там и в ХР создается отдельное окно с графиком. а управление идет через текстовое окно(((
Ответить