Как сделать обвязку класса FPC Tform для использования в LUA

Вопросы использования сторонних (не входящих в состав FPC и Lazarus) утилит и библиотек.

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

Как сделать обвязку класса FPC Tform для использования в LUA

Сообщение exploitvn » 18.03.2013 17:19:53

Доброго времени суток, уважаемые форумчане!

В данный момент разрабатываю проект, в котором gui написан на FPC, а логика работы должна быть обязательно на интерпретируемом языке, в частности LUA, т.к. в дальнейшем отладка у заказчика должна происходить без среды разработки. Таковы условия использования приложения и не изменятся.

Вопрос, помогите пожалуйста, кто знает хоть небольшим примером, как можно экспортировать целый класс формы TForm с ее методами для дальнейшего использования в Lua. Долгие дни "гугления" ни к чему не привели, много битых устаревших ссылок. Везде полно информации по экспорту простых функций из Delphi. Или наоборот даже - вызов Lua скриптов с "жёсткой" привязкой к элементам управления. Это не подходит, т.к. ставит в жёсткие рамки.
Необходима полная работа с классами форм из Lua, в частности, важна привязка функций скриптов Lua к элементам управления(по событиям onClick) из самих скриптов, а не из среды FPC.
Подходящую инфу по биндингу FPC для Lua нигде не встречал к сожалению, FPC как то обделили, а у него все таки есть немало своих особенностей, отличных от обвязки в других языках. Даже создатели CrystalLua пишут, что полноценной поддержки нет.

Просто Lua по всем параметрам подходит для написания логики приложения, потому не хотелось бы переходить на другой язык.

Заранее спасибо, за любую адекватную помощь.

Добавлено спустя 9 минут 4 секунды:
Хочу уточнить - требуемая версия Lua - 5.2. там добавился нужный оператор goto. В ней произошли некоторые изменения по сравнению с предыдущими версиями, и соотв. регистрация ф-ций и классов происходит несколько иначе.
exploitvn
незнакомец
 
Сообщения: 3
Зарегистрирован: 18.03.2013 16:58:22

Re: Как сделать обвязку класса FPC Tform для использования в

Сообщение alexey38 » 18.03.2013 18:32:21

С LUA не работал, но работал с PascalScript. Я эспортировал обычные функции, а эти функции уже вызывали методы класса или выполняли операции со свойствами формы. Также я делал, что внутри паскалевской программы я формировал нужный мне текст скрипта, составленный из отдельных кусков скрипта, написанных пользователем. Условно говоря, на каждое событие в паскале вызывается некий скрипт, а текст этого скрипта загружается из некого места по некому правилу.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: Как сделать обвязку класса FPC Tform для использования в

Сообщение runewalsh » 20.03.2013 03:11:51

Подходы вроде CrystalLUA — это дорога в ад. Скрипты должны работать на более высоком уровне, чем методы нативных классов. Гипотетический пример:
Код: Выделить всё
form = CreateForm
{
    caption = "test",
    label_welcome =
    {
        what = "label",
        x = 50, y = 50,
        caption = "... placeholder.txt ..."
    },
    btn_hello =
    {
        what = "button",
        x = 50, y = 80,
        caption = "Hello",
        onClick = function() ShowMessage("И тебе привет") end
    }
}

Да, для такого придётся написать отдельный класс-биндинг, но плюсы декларативного стиля и вообще высокоуровневости очевидны. А чтобы было откуда дёргать Lua-обработчики, достаточно сохранить ссылку на переданную таблицу.
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 578
Зарегистрирован: 27.04.2010 00:15:25

Re: Как сделать обвязку класса FPC Tform для использования в

Сообщение exploitvn » 21.03.2013 10:47:04

Вижу никто не сталкивался с Lua... Спасибо тем, кто ответил!

В инете нахожу ссылки на файл pas2lua.pas, какой то wrapper для FPC/Delphi, но скачать его уже нет возможности - ссылки ведут на не существующий ресурс - eonclash.com. Может у кого-то случайно завалялся этот файл биндинга для FPC ?
exploitvn
незнакомец
 
Сообщения: 3
Зарегистрирован: 18.03.2013 16:58:22

Re: Как сделать обвязку класса FPC Tform для использования в

Сообщение Jargar » 21.03.2013 14:01:19

Сел в машину времени и достал файлы

http://www.ex.ua/view/24008915
Jargar
новенький
 
Сообщения: 21
Зарегистрирован: 06.11.2007 14:42:24

Re: Как сделать обвязку класса FPC Tform для использования в

Сообщение B4rr4cuda » 21.03.2013 18:56:54

exploitvn, в pLua был реализован как раз тот функционал, что вам надо.. только оно было очень все сырое, когда я смотрел в последний раз.. но это было давно.
На данный момент ссылка мертва, так что смотреть в машине времени

ps: pas2lua - с того же проекта..

pps: если найдете инфу - поделитесь, пожалуйста, это вопрос у меня тоже скоро будет актуален)
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Как сделать обвязку класса FPC Tform для использования в

Сообщение exploitvn » 25.03.2013 11:09:44

Большое спасибо за ссылки на архивы, pLua - это действительно то что нужно, буду допиливать и использовать его. B4rr4cuda, а что Вы подразумеваете под "было очень все сырое"? Часто возникают ошибки во время использования?
exploitvn
незнакомец
 
Сообщения: 3
Зарегистрирован: 18.03.2013 16:58:22

Re: Как сделать обвязку класса FPC Tform для использования в

Сообщение B4rr4cuda » 25.03.2013 17:24:41

exploitvn, я уже и не помню, если честно. То ли крэшилось, то ли не весь обьявленный функционал был запилен.. Но я смотрел его чуть ли не пять лет назад, поэтому думаю, что инфа неактуальна)
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35


Вернуться в Сторонние средства

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru