Tuesday, January 27, 2009

Delphi中使用Lua脚本语言的几点注意

1. 想在delphi里面使用lua,如果不懂安装那么就可以不安装,把下来的lua.pas文件和两个dll文件放在工程目录里,并且在工程里的uses部分加上lua就可以了。

2. 如果想仅仅运行文件中的一个函数,似乎必须先运行整个文件,也就是需要两次调用pcall函数。这可能是运行函数之前需要先给出一个函数列表。

lua_pcall(Lua_script, 0, 0, 0);
lua_getglobal(Lua_script, functionname);
result := lua_pcall(Lua_script, 0, 1, 0);

3. 若函数的某个参数是表,即{1, 2, 3}这样的形式,那么如果想读取表中的第三个值(就是3),必须按照以下顺序使用4个函数:

lua_pushnumber(L, 3); //3指表中第3位
lua_gettable(L, -2); //-2指表在栈中的位置。这个例子里表参数是最后一个入栈,一般的说应是-1,但是由于方才又压入了一个值,所以变成了-2,同时,表在栈中的位置这个值会被出栈,而从表中读取到的值会入栈。
p := lua_tostring(L, -1); //把栈顶的数据读出来。
lua_pop(L, 1); //清栈。

4. lua的delphi译本似乎很多,我用的是http://www.matrix44.de/lua/下载的。

No comments: