Пытаюсь решить проблему с глючными keypressed и readkey в FPC. Временное решение: написать внешнюю библиотеку на С с использованием стандартных функций. Компилить буду на линуксе. Предположительно, на выходе библиотеки нужны такие функции: function keypressed2 : byte; {1 клавиша нажата, 0 - нет} function readkey2 : byte; {ну или word - код нажатой клавиши} Возможно, стандартная функция будет возвращать "снимок" состояния клавиатуры, тогда readkey2 возвратит массив byte или word.
hardcase
10.07.2006 0:13
А зачем тебе таким спортом заниматься? Разве API функции использовать - косяк? Пишешь функцию ожидания нажатия для Windows и для Linux на FPC и проблемы-то какие?
Чем тебе не нравится виндосовская
SHORT GetKeyState( int nVirtKey // virtual-key code );
наверняка под линуксом есть нечто подобное.
SKVOZNJAK
10.07.2006 1:31
Проверю, но не факт что заработает, графическое окно, оно не как текстовое действует. Вполне возможно что получится как с Readln - активно графическое окно, а нажатия энтера ожидает текстовое.
hardcase
10.07.2006 17:53
Read и ReadLn ожидают ввода в программном канале (pipe) стандартного воода не более. Другое дело фокус ввода. Если фокус ввода находится в cli-окне, то ввод будет происходить в стандартный поток, в противном случае, ввод нужно обрабатывать самостоятельно. В обоих случаях GetKeyState будет работать ибо она асинхронна по своей природе и обращается к системному обработчику клавиатуры.
SKVOZNJAK
13.07.2006 18:24
По ходу, в паскале нет GetKeyState, а написать самую простенькую прогу на С для мненя сейчас не реально - вначале нужно изучать синтаксис. А это время которого и так не хватает. И всё это для двух-трёх функций, которые были бы не нужны если бы разработчики фпц вместо дифирамбов лазарусу уделили несколько человекодней на поднятие клавы. Всего то и нужно посмотреть в сишных исходниках линукса реально работающий код. В BP7 висел доступ к памяти, в FPC - к клаве, нет в жизни счастья Ещё ко всему прочему в FPC не поддерживается DLL. В каком формате стрелять у сишников исходник библиотеки\модуля - без понятия.
virt
19.07.2006 19:50
Как не поддерживает? Все прекрасно поддерживает:?
SKVOZNJAK
24.07.2006 2:54
А если поддерживает, не могли бы написать такую совместимую библиотечку на С А то у меня написание проги больше месяца висит.
virt
27.07.2006 3:02
SKVOZNJAK, посмотри юнит keyboard ,думаю там есть то что тебе надо.
klem4
27.07.2006 22:51
Может я не о том, но всеже, у меня тоже были проблемы при использовании readln и readkey в FPC в графическом режиме. Пробелма решилась очень просто, и это кстати обсуждалось на форуме вроде - использовать вместо Crt - WinCrt.
SKVOZNJAK
13.08.2006 0:23
Wincrt на линуксе??? Прикольно если такое реализовано. Примеры с keyboard в граф моде тоже буксуют. Есть мысль читать из файла /dev/port но без пароля root система наврят ли разрешит запись. На форуме адрес буфера клавы указан как с 0:$41A до 0:$41C Неужели всего 3 байта? Откуда тогда в паскале 15, или это расширение операционки?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.