Помощь - Поиск - Пользователи - Календарь
Полная версия: Нужен исходник простой библиотеки на С
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
SKVOZNJAK
Пытаюсь решить проблему с глючными keypressed и readkey в FPC. Временное решение: написать внешнюю библиотеку на С с использованием стандартных функций. Компилить буду на линуксе. Предположительно, на выходе библиотеки нужны такие функции:
function keypressed2 : byte; {1 клавиша нажата, 0 - нет}
function readkey2 : byte; {ну или word - код нажатой клавиши}
Возможно, стандартная функция будет возвращать "снимок" состояния клавиатуры, тогда readkey2 возвратит массив byte или word.
hardcase
А зачем тебе таким спортом заниматься?
Разве API функции использовать - косяк?
Пишешь функцию ожидания нажатия для Windows и для Linux на FPC и проблемы-то какие?

Чем тебе не нравится виндосовская

SHORT GetKeyState(
int nVirtKey // virtual-key code
);


наверняка под линуксом есть нечто подобное.
SKVOZNJAK
Проверю, но не факт что заработает, графическое окно, оно не как текстовое действует. Вполне возможно что получится как с Readln - активно графическое окно, а нажатия энтера ожидает текстовое.
hardcase
Read и ReadLn ожидают ввода в программном канале (pipe) стандартного воода не более.
Другое дело фокус ввода. Если фокус ввода находится в cli-окне, то ввод будет происходить в стандартный поток, в противном случае, ввод нужно обрабатывать самостоятельно. В обоих случаях GetKeyState будет работать ибо она асинхронна по своей природе и обращается к системному обработчику клавиатуры.
SKVOZNJAK
По ходу, в паскале нет GetKeyState, а написать самую простенькую прогу на С для мненя сейчас не реально - вначале нужно изучать синтаксис. А это время которого и так не хватает. И всё это для двух-трёх функций, которые были бы не нужны если бы разработчики фпц вместо дифирамбов лазарусу уделили несколько человекодней на поднятие клавы. Всего то и нужно посмотреть в сишных исходниках линукса реально работающий код. В BP7 висел доступ к памяти, в FPC - к клаве, нет в жизни счастья nea.gif Ещё ко всему прочему в FPC не поддерживается DLL. В каком формате стрелять у сишников исходник библиотеки\модуля - без понятия.
virt
Как не поддерживает? Все прекрасно поддерживает:?
SKVOZNJAK
А если поддерживает, не могли бы написать такую совместимую библиотечку на С cool.gif А то у меня написание проги больше месяца висит.
virt
SKVOZNJAK,
посмотри юнит keyboard ,думаю там есть то что тебе надо.
klem4
Может я не о том, но всеже, у меня тоже были проблемы при использовании readln и readkey в FPC в графическом режиме. Пробелма решилась очень просто, и это кстати обсуждалось на форуме вроде - использовать вместо Crt - WinCrt.

SKVOZNJAK
Wincrt на линуксе??? Прикольно если такое реализовано. Примеры с keyboard в граф моде тоже буксуют. Есть мысль читать из файла /dev/port но без пароля root система наврят ли разрешит запись. На форуме адрес буфера клавы указан как с 0:$41A до 0:$41C Неужели всего 3 байта? Откуда тогда в паскале 15, или это расширение операционки?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.