zoukankan      html  css  js  c++  java
  • Lua 5.1 for Delphi 2010

    This is a Lua 5.1 Wrapper for Delphi 2009 and Delphi 2010 which automatically creates OOP callback functions.

    “Lua
     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 Marco Antonio Abreu
    - converted PChar to PAnsiChar
    - converted Char to AnsiChar
    - added function LuaLibLoaded: Boolean;
    - added a new base class (TLua) with OOP call back functions

    Download
    LuaDelphi2010-v1.3

    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 class
    1.2  Added example on how to extend lua with a delphi dll
    1.1  Improved global object table, optimized delphi function calls
    1.0  Initial Release

    Example
    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);

    Tags: 

  • 相关阅读:
    Codeforces Round #630 (Div. 2)A~E题解
    2020cug新生赛 An easy problem
    tensorflow.python.framework.errors.NotFoundError: <exception str() failed>错误解决
    将博客搬至CSDN
    2018年北京大学软件工程学科夏令营上机考试
    程序设计题目中的输入输出
    2018北大计算机学科夏令营机试题目
    Pyhton全栈的知识点(5)
    Python全栈的知识点(4)
    Python全栈的知识点(3)
  • 原文地址:https://www.cnblogs.com/zerovirs/p/3297914.html
Copyright © 2011-2022 走看看