IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

 
 Ответить  Открыть новую тему 
> Нужен исходник простой библиотеки на С
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Пытаюсь решить проблему с глючными keypressed и readkey в FPC. Временное решение: написать внешнюю библиотеку на С с использованием стандартных функций. Компилить буду на линуксе. Предположительно, на выходе библиотеки нужны такие функции:
function keypressed2 : byte; {1 клавиша нажата, 0 - нет}
function readkey2 : byte; {ну или word - код нажатой клавиши}
Возможно, стандартная функция будет возвращать "снимок" состояния клавиатуры, тогда readkey2 возвратит массив byte или word.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


А зачем тебе таким спортом заниматься?
Разве API функции использовать - косяк?
Пишешь функцию ожидания нажатия для Windows и для Linux на FPC и проблемы-то какие?

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

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


наверняка под линуксом есть нечто подобное.


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Проверю, но не факт что заработает, графическое окно, оно не как текстовое действует. Вполне возможно что получится как с Readln - активно графическое окно, а нажатия энтера ожидает текстовое.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Read и ReadLn ожидают ввода в программном канале (pipe) стандартного воода не более.
Другое дело фокус ввода. Если фокус ввода находится в cli-окне, то ввод будет происходить в стандартный поток, в противном случае, ввод нужно обрабатывать самостоятельно. В обоих случаях GetKeyState будет работать ибо она асинхронна по своей природе и обращается к системному обработчику клавиатуры.


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


По ходу, в паскале нет GetKeyState, а написать самую простенькую прогу на С для мненя сейчас не реально - вначале нужно изучать синтаксис. А это время которого и так не хватает. И всё это для двух-трёх функций, которые были бы не нужны если бы разработчики фпц вместо дифирамбов лазарусу уделили несколько человекодней на поднятие клавы. Всего то и нужно посмотреть в сишных исходниках линукса реально работающий код. В BP7 висел доступ к памяти, в FPC - к клаве, нет в жизни счастья nea.gif Ещё ко всему прочему в FPC не поддерживается DLL. В каком формате стрелять у сишников исходник библиотеки\модуля - без понятия.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


А если поддерживает, не могли бы написать такую совместимую библиотечку на С cool.gif А то у меня написание проги больше месяца висит.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


SKVOZNJAK,
посмотри юнит keyboard ,думаю там есть то что тебе надо.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Может я не о том, но всеже, у меня тоже были проблемы при использовании readln и readkey в FPC в графическом режиме. Пробелма решилась очень просто, и это кстати обсуждалось на форуме вроде - использовать вместо Crt - WinCrt.



--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


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

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 21.11.2017 17:06
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"