Довольно часто требуется скомпоновать код программы так, что он сильно походит на выполнение некоего сценария. Например:
... Procedure MyOutput(String.s) ; Вывод строки в файл WriteStringN(#MyFile, "<p>"+String+"</p>") EndProcedure ... ; Начало сценария MyOutput("Первая строка") MyOutput("Вторая") MyOutput("И следующая") ... ; Конец сценария
При этом тело сценария часто менять приходится, не компилировать же каждый раз заново.. В общем, скриптовой Lua значительно упростил бы жизнь.
Вопрос связан с его подключением. Есть информация как это сделать?
Я пробовал подключить dll-ку, что на оф.сайте скачать можно. Не клеится что-то. Вот код:
; Попытка подключить в работу интерпритатор Lua ; Компилятор PB 5.11(х64) #LuaLibrary=0 OpenLibrary(#LuaLibrary, "Lua52.dll") If IsLibrary(#LuaLibrary) : Debug "Ура! Библиотека подгружена!" Else Debug "Ну облом( Библиотека не была подгружена!" End EndIf luaVM.i=CallCFunction(#LuaLibrary, "luaL_newstate", 0) If luaVM : Debug "Создана виртуальная машина Lua" Else Debug "При создании в.м. Lua что-то пошло не так" EndIf If CallCFunction(#LuaLibrary, "luaL_openlibs", luaVM) Debug "Были подгружены стандартные библиотеки Lua" Else Debug "Стандартные библиотеки Lua подгружены не были" EndIf PrototypeC luaL_loadstring(LuaVM, String.p-ascii) ; Описываем процедуру. По идее, библиотека Lua принимает строки только в ascii кодировке. LuaL_LoadString.luaL_loadstring=GetFunction(#LuaLibrary, "luaL_loadstring") Debug LuaL_LoadString(luaVM, "a = 1 + 1;") ; Загружаем строку скрипта Debug CallCFunction(#LuaLibrary, "lua_pcall", luaVM, 0, -1, 0) ; Выполняем скрипт CallCFunction(#LuaLibrary, "lua_close", luaVM) ; Закрываем VM CloseLibrary(#LuaLibrary) ; и выключаем Lua
Код компилируется и выполняется без сбоев, но действительно проверить его работоспособность не представляется возможным. Может кто занимался данным вопросом?
Отредактировано Тигрёнок (29.08.2014 21:33:45)