Lua 與 delphi 的互動,通常是在 delphi 中加載 Lua 的庫,比如 Lua for delphi 等。
假設用 Lua 編寫了壹個函數(保存在 lua_GetColor.lua 文件中):
function?nogi_GetColor(nR,nG,nB)?if?nR?<=?25?and?nG?<=?25?and?nB?<=?25?then?--?取出25以下黑色?
return?1;?
end;?
return?0;?
end
那麽調用上面 Lua 函數的代碼:
uses?LUA,?LUALIB;?//引入LUA庫?function?lua_CheckColor(r,g,b:Integer):Boolean;?
var?
Lua?:?TLua;?
begin?
Lua?:=?TLua.Create; luaopen_debug(LuaInstance);?//如果要使用debug庫? luaopen_math(LuaInstance);//?如果要使用math庫?不然就會attempt?to?index?global?'math'?(a?nil?value)? luaopen_os(LuaInstance);? luaopen_string(LuaInstance);? luaopen_table(LuaInstance);? Lua.DoFile('lua_GetColor.lua');? lua_getglobal(Lua.LuaInstance,'nogi_GetColor');? lua_pushnumber(Lua.LuaInstance,?r);?//將腳本中add函數使用的參數壓棧? lua_pushnumber(Lua.LuaInstance,?g);?//將腳本中add函數使用的參數壓棧? lua_pushnumber(Lua.LuaInstance,?b);?//將腳本中add函數使用的參數壓棧? lua_pcall(Lua.LuaInstance,?3,?1,0)?;? Result?:=?(lua_toInteger(Lua.LuaInstance,-1)?=?1);? Lua.Free;?end;