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

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

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

Ответить
exploitvn
незнакомец
Сообщения: 3
Зарегистрирован: 18.03.2013 16:58:22

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

Сообщение exploitvn »

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

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

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

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

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

Добавлено спустя 9 минут 4 секунды:
Хочу уточнить - требуемая версия Lua - 5.2. там добавился нужный оператор goto. В ней произошли некоторые изменения по сравнению с предыдущими версиями, и соотв. регистрация ф-ций и классов происходит несколько иначе.
alexey38
долгожитель
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Сообщение alexey38 »

С LUA не работал, но работал с PascalScript. Я эспортировал обычные функции, а эти функции уже вызывали методы класса или выполняли операции со свойствами формы. Также я делал, что внутри паскалевской программы я формировал нужный мне текст скрипта, составленный из отдельных кусков скрипта, написанных пользователем. Условно говоря, на каждое событие в паскале вызывается некий скрипт, а текст этого скрипта загружается из некого места по некому правилу.
Аватара пользователя
runewalsh
энтузиаст
Сообщения: 579
Зарегистрирован: 27.04.2010 00:15:25

Сообщение runewalsh »

Подходы вроде 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-обработчики, достаточно сохранить ссылку на переданную таблицу.
exploitvn
незнакомец
Сообщения: 3
Зарегистрирован: 18.03.2013 16:58:22

Сообщение exploitvn »

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

В инете нахожу ссылки на файл pas2lua.pas, какой то wrapper для FPC/Delphi, но скачать его уже нет возможности - ссылки ведут на не существующий ресурс - eonclash.com. Может у кого-то случайно завалялся этот файл биндинга для FPC ?
Jargar
новенький
Сообщения: 21
Зарегистрирован: 06.11.2007 13:42:24

Сообщение Jargar »

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

http://www.ex.ua/view/24008915
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

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

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

pps: если найдете инфу - поделитесь, пожалуйста, это вопрос у меня тоже скоро будет актуален)
exploitvn
незнакомец
Сообщения: 3
Зарегистрирован: 18.03.2013 16:58:22

Сообщение exploitvn »

Большое спасибо за ссылки на архивы, pLua - это действительно то что нужно, буду допиливать и использовать его. B4rr4cuda, а что Вы подразумеваете под "было очень все сырое"? Часто возникают ошибки во время использования?
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

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