This is a Lua 5.1 Wrapper for Delphi 2009 and Delphi 2010 which automatically creates OOP callback functions.
is a powerful, fast, lightweight, embeddable scripting language, it has been used in many industrial applications (e.g., Adobe’s Photoshop Lightroom), with an emphasis on embedded systems (e.g., the Ginga middleware for digital TV in Brazil) and games (e.g., World of Warcraft). Lua is currently the leading scripting language in games and it has a deserved reputation for performance. To claim to be “as fast as Lua” is an aspiration of other scripting languages.”This Lua Wrapper is based on Lua-Pascal v0.2 by
- converted PChar to PAnsiChar- converted Char to AnsiChar- added function LuaLibLoaded: Boolean;- added a new base class (TLua) with OOP call back functionsDownload
History
1.3 Improved Callback, now uses pointer instead of object index. Modified RegisterFunctions to allow methods from other class to be registered, moved object table into TLua class1.2 Added example on how to extend lua with a delphi dll1.1 Improved global object table, optimized delphi function calls1.0 Initial ReleaseExample
TLua automatically creates OOP callback functions for Delphi <-> Lua: uses Lua, LuaLib; type TMyLua = class(TLua) published function HelloWorld(LuaState: TLuaState): Integer; end; function TMyLua.HelloWorld: Integer;var ArgCount: Integer; I: integer;begin writeln('Delphi: Hello World'); ArgCount := Lua_GetTop(LuaState); writeln('Arguments: ', ArgCount); for I := 1 to ArgCount do writeln('Arg1', I, ': ', Lua_ToInteger(LuaState, I)); // Clear stack Lua_Pop(LuaState, Lua_GetTop(LuaState)); // Push return values Lua_PushInteger(LuaState, 101); Lua_PushInteger(LuaState, 102); Result := 2;end; var MyLua: TLua; begin MyLua := TMyLua.Create; MyLua.DoFile('Helloworld.lua'); MyLua.Free;end; |
helloworld.lua
print("LuaDelphi Test");p1,p2 = HelloWorld(1,2,3)print "Results:";print (p1);print (p2); |