Компоненты для встраивания Lua скрипта в Hiasm приложение. http://forum.hiasm.com/getfile/38616
Примеры http://forum.hiasm.com/getfile/38292
Не стал делать традиционным методом, как Visual Basic, или Java Script.
Все они заточены на статический кусок кода исполняемый в приложении.
Почему-бы тогда не выразить то-же самое в IC?
С Lua дела обстоят иначе. Lua позволяет создавать динамические структуры, создавать и уничтожать новые функции и переменные из основного приложения и
менять текст скрипта и всё это во время работы приложения. По этому его удобно использовать в качестве конфигурационного языка.
И вообще, Lua — это крошечный и простой язык.
LuaScript - это основной компонент. Он создаёт виртуальную машину Lua. Виртуальных машин в приложении может быть несколько и они могут обслуживать
свои потоки.
Скрипт может читается (исполняться), как из входного потока, так и из файла. Скрипт может быть, как в текстовом виде, так и в бинарном - скомпилированном виде. Разницы в применении нет.
Пара компонентов lua_getfunction и lua_HiFunction образуют Callback в Lua, или Hiasm, в зависимости от порядка их применения.
lua_HiFunction - компонент регистрирует имя функции (именованный кусок схемы), который потом можно вызвать из Lua.
Параметры в Hiasm передаются через правые точки.
Нижних точек не стал делать, потому что получается неуклюже приводить данные к определённому типу, или в TData + промежуточное хранение(никому не нужное) - аргументы берутся со стека, во всеми вытекающими...
Удалось найти хорошее решение на стыке языков. В Lua переменные динамического типа и принимают нужный тип в момент применения.
И не все типы, что есть в Lua можно протащить через точки - их очень много. Если нужна экзотика, то через IC.
Не цепляйте точку doRegisterF на точку onOUT компонента hiLuaScript, потому что это не конец чтения скрипта, а окончание работы виртуальной машины.
(скрипты могут подгружаться динамически, и выполнять свои функции.)
Hilua_getfunction - компонент вызывает функции определённые в Lua.
Аргументы подаются на верхние точки.
Результаты получаем из правых точек. Результатов функции Lua может быть несколько. Процедура - функция без результата.
Пустых верхних точек не должно быть. Это приведёт к ошибке.
Обработчика ошибок не стал делать из-за рентабельности, хотя такая возможность есть. Тогда придётся запускать функцию в защищённом режиме и отслеживать стек.
Лучше потом сделать отладчик... В dll это заложено. В dll заложены различные библиотеки, чтобы не париться, так что запускаемая виртуальная машина хорошо упакована. Dll имеет название lua5.1.dll и полностью совместима с обычной. В дальнейшем библиотеку можно завернуть в паскаль.
Нужно посмотреть не юзает её кто нибудь ещё из https://yadi.sk/d/2eFy5tu23PhPB3?
Установка обычная. Перетаскиваем ini файлы на поле Hiasm. lua5.1.dll кидаем в корень папки Hiasm.
Для контроля, скопировать все pas файлы в .\HiAsm\Elements\Delphi\code\.
Продолжение следует.
Следующие серии уже снимаются.
Редактировалось 7 раз(а), последний 2019-02-27 02:05:44
Этот топик читают: Гость
Ответов: 2059
Рейтинг: 132
|
|||
карма: 6 |
| ||
Голосовали: | LainX, andrestudio, Vaeltaja |
Ответов: 5227
Рейтинг: 587
|
|||
flint2, на самом деле ещё один мёртворождённый элемент, даже делай ты его по подобию Gentee а не так
flint2 писал(а): Не стал делать традиционным методом, как Visual Basic, или Java Script. |
|||
карма: 4 |
|
Ответов: 2059
Рейтинг: 132
|
|||
Скажу так. Я преследую чисто определённую цель - гимнастика мозгов.
Мозги без практики ржавеют. Давным давно, ... Если какие нибудь примеры броские выложить типа https://www.youtube.com/watch?v=i_W2c01DFwY , то наверное охотники нашлись-бы, правда не много. Что-то похожее можно выложить, на чём учился, но доля Hiasm заключается в кнопочках и нескольких IC. В общем дело было так, я сидел курил табак... Внук спросил, что было до юрского периода? Решил сделать реконструкцию Триасового периода. Нашел движок Leadwerks, понравился, а там интерфейс на Lua. Стал изучать, благо, что чрезвычайно лёгок для изучения. Движок в изучении - куда круче. Движков с интерфейсом на delphi всего два, да и те не фонтан. Почему-то хотелось сохранить какую нибудь зацепку к Hiasm, почему, и сам не знаю. По этому СИ не рассматривал. Задумка была такая, чтобы мышкой и кнопочками путешествовать + из калаша стрелять. Получилось. Чтобы было представление о чём речь - вот похожая штука https://www.youtube.com/watch?v=W7FMXZUmcvo , или https://www.youtube.com/watch?v=ITrKX1w--aE Могу такую https://www.youtube.com/watch?v=xaiTw5RuG84 выложить, только упрощённую и не с полётом камеры, а бродить с автоматом. Как не крути, надо и движок выкладывать. Скорее будут интересны прибамбасы сделанные в Hiasm для "съёмок" Мезозоя. Всё лето развлекался, вот и решил наклепать компоненты. Не пропадать-же добру. Но IC это одно, а компоненты - совсем другое. Тут концепция нужна. Наклепать сотни компонентов с одной функцией - это не выход, как и не выход сделать один компонент "скрипт". IC в данном случае тоже не очень удобны, если их везде тыкать. По мере осмысления буду рисовать по нескольку штук. Тоже ведь занятие. Редактировалось 6 раз(а), последний 2017-11-17 00:41:17 |
|||
карма: 6 |
|
Ответов: 5227
Рейтинг: 587
|
|||
flint2, скажу так, пути господни неисповедимы. Думал ВАЩЕ!!! сюда ни нагой больше, дык смотрю и так всё хиреет само собой, ну думаю хоть встряхнуть кого кто ещё дышит
|
|||
карма: 4 |
|
Ответов: 2059
Рейтинг: 132
|
|||
Дон andrestudio, ты шибко не серчай! Всё образуется!
Ты вот пришел, построил всех... А я чё? Я теперь помногу ни-ни, возьму бутылочку и пивка, чтоб деньги не на ветер. Ведь на пенсии... Вот тогда кровь до мозга доходит, ну и хмеля чутка. Вот тогда и пишу, когда полёт мысли необычайный. Короче, обнимаю! сюда ни нагой больше Где предмет поучения икать будешь? На родных и на работе и так перебор, жалеть надо. Редактировалось 3 раз(а), последний 2017-11-17 22:53:09 |
|||
карма: 6 |
|
Ответов: 5227
Рейтинг: 587
|
|||
flint2, постараюсь быть кратким.
1) Ты ЧУВАК, хотя твои тексты читать это как ребусы разгадывать (но всё равно интересно) 2) Меня здесь научили программировать (т.е думать как это должно выглядеть и работать, тогда ещё можно было из меня пластилин лепить), жаль тут многих учителей не видать и уже давно 3) Сюда пришёл из MultimediaBuilder(тоже конструктор), там расширяемые скрипты были в почёте (х.з что тут была за паранойя, когда за IC к анафеме могли присечь за такое), молчать не могу раз уж понесло, тут звания раздавали за лукавые схемы, типа соревнования у кого короче от т.з. Так вот у кого оказался короче те уже давно не отсвечивают 4) Немного разочарован что проект к моему сожалению (мнение моё и чисто субъективное) начинает завершающую стадию (не только для себя а так же для коллег кто много сюда вкладывал) 5) andrestudio писал(а): Где предмет поучения икать будешь?https://www.google.ru flint2, если есть более надёжные источники предлагай |
|||
карма: 4 |
|
Ответов: 2059
Рейтинг: 132
|
|||
постараюсь быть кратким. Я тоже. Тут сын младший нарисовался, ну и как положено..., а я уже. Короче, чтоб лишнего не наболтать спьяну. Проект не к твоему, не к моему, не к кого либо ещё сожалению ̶н̶а̶ч̶и̶н̶а̶е̶т̶ вошел в завершающую стадию. Это естественный процесс всего сущего. Это не плохо не хорошо, а так положено. Можно рассуждать о всплесках и с чем они связанны, но это не суть дела. Было бы забавно, если бы до сих пор мусолили наработки из КОЛ и вообще контролы. Период жизни продлился бы, если в основе была классика, а не КОЛ, но не на много. Закон - есть закон! Зато была-бы законченная вещь, а то не то ни сё. (Честно говоря, я когда врубился, был крайне разочарован.) Никто-же не говорит, что delphi7 умерший проект. Нет изменений, и слава богу! Работает - не трогай! Я гляжу, что ты тоже не хочешь поучаствовать в новых начинаниях и знаю почему. По пятому пункту везде дела обстоят ещё хуже. Что имеем не храним потерявши плачем. Если чё, ругайся на меня. А что не спишь в такое время? Это в Москве за полночь, а у тебя вообще! Редактировалось 4 раз(а), последний 2017-11-18 00:57:28 |
|||
карма: 6 |
|
Ответов: 2059
Рейтинг: 132
|
|||
Продолжаем разговор.
Добавил два компонента, архив перезалил. http://forum.hiasm.com/getfile/38249 Раз компонент lua_HiFunction вызывает кусок схемы, как функцию, то совершенно очевидно, что результаты этой функции хорошо-бы вернуть в программу скрипта. Компонент setvar может вернуть значение функции в виде значения существующей переменной, либо динамически создать переменную, указанную в компоненте и присвоить ей значение. (Была идея задавать список имён переменных в компоненте, но это оказалось не удобно.) Точка doSetvar устанавливает значение переменной, само значение передаётся в потоке, либо с верхней точки, имя задаётся в компоненте. Чтобы работать с множеством имён переменных существует точка doVarname, куда в потоке подаются имена, а на верхнюю точку данные. Компонент Getvar, напротив получает значения переменных из "скрипта" для дальнейшего использования в схеме. При этом скрипт и схема могут работать асинхронно. Думаю, что вопросов возникнуть не должно. Продолжение следует. Редактировалось 5 раз(а), последний 2017-11-20 20:48:44 |
|||
карма: 6 |
|
Ответов: 2059
Рейтинг: 132
|
|||
Перезалил архив http://forum.hiasm.com/getfile/38290.
Добавлен компонент lua_HiFunction. Компонент передаёт аргументы в схему hiasm и возвращает значения в качестве результатов функции. Бывший компонент lua_HiFunction переименован в lua_HiProcedure. (старый удалить и поставить lua_HiFunction и lua_HiProcedure заново!) В архиве пример. Пример достаточно простой, но наглядно показывает гибкость языка. Каждая строчка листинга прокомментирована, просто надо внимательно посмотреть, как он взаимодействует со схемой. Примеры http://forum.hiasm.com/getfile/38292 Редактировалось 2 раз(а), последний 2018-01-16 11:52:36 |
|||
карма: 6 |
|
Ответов: 2059
Рейтинг: 132
|
|||
Забавный пример http://forum.hiasm.com/getfile/38295
|
|||
карма: 6 |
|
Ответов: 537
Рейтинг: 14
|
|||
Расскажите подробней, где эти скрипты могут пригодится совместно с хайясмом, кроме игры, вы просто сами изучаете и решили повеселить народ? Вы читали пост ниже.
П. С .Так давайте бросим хайясм и каждый пойдет своей дорогой, начнем изучать разные языки программирования и у нас по одиночке все равно много не получится, блин утопия Редактировалось 1 раз(а), последний 2018-01-19 20:22:48 |
|||
карма: 4 |
|
Ответов: 2059
Рейтинг: 132
|
|||
Всё просто, видишь не то, - отойди!
По моему разуиению, сначала надо понять, на кой тебе скрипты нужны? (Вообще, мне кажется, что наблюдается какая-то путаница в этом понятии) Или Вы спрашиваете, что с ними делать? Вы читали пост ниже. Нет!А где? А трубку, лучше не курить! Не красит. Редактировалось 5 раз(а), последний 2018-01-20 03:40:02 |
|||
карма: 6 |
|
Ответов: 537
Рейтинг: 14
|
|||
Например, я запускаю не программу, а оболочку с кнопкой и ссылкой на скрипт который нужно выполнить, и прога делает то, что написано в скрипте в тексте. Вот дописал и прога выполнила еще одно действие
Вот ссылка http://forum.hiasm.com/topic/66491 меня так ни кто и не понял. История, я в этой тупорлыке писал большую программу, и она загружалась минут 5, и придумал в коде программы оставить почти , только кнопки, а остальной код читать с файла и все четко работало, я спрашиваю, ваш может это сделать и пример Редактировалось 4 раз(а), последний 2018-01-20 04:26:23 |
|||
карма: 4 |
|
Ответов: 2059
Рейтинг: 132
|
|||
Ну ты меня добьёш!
Давай сделаем так, посмотрим что не так, но и ты должен сказать, что не так. Но завтра. Завтра, завтра, не сегодня!!! Так лентяи гопорят! |
|||
карма: 6 |
|
Ответов: 5227
Рейтинг: 587
|
|||
Брэк ребята, скрипты нужны т.к облегчают жизнь. Вот вам и пример для размышления (в прищепке), правда сырой пока ещё...
|
|||
карма: 4 |
| ||
файлы: 1 | WMPlayer.zip [132.6KB] [733] |