Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Нужен исходник простой библиотеки на С

Автор: SKVOZNJAK 9.07.2006 23:02

Пытаюсь решить проблему с глючными 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 - к клаве, нет в жизни счастья nea.gif Ещё ко всему прочему в FPC не поддерживается DLL. В каком формате стрелять у сишников исходник библиотеки\модуля - без понятия.

Автор: virt 19.07.2006 19:50

Как не поддерживает? Все прекрасно поддерживает:?

Автор: SKVOZNJAK 24.07.2006 2:54

А если поддерживает, не могли бы написать такую совместимую библиотечку на С cool.gif А то у меня написание проги больше месяца висит.

Автор: 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, или это расширение операционки?