luaL_loadstring
如果存在语法错误(如果有),则根据文档返回。
有没有办法确定 Lua 首先确定存在语法错误的位置,或者除了说明存在语法错误的返回值之外的任何其他信息?
luaL_loadstring
调用lua_load
手册中的实际工作:
加载一个 Lua 块(不运行它)。如果没有错误,lua_load 会将编译好的块作为 Lua 函数推送到堆栈顶部。否则,它会推送一条错误消息。
因此,您可以检查 的返回值luaL_loadstring
,如果返回错误,请检查堆栈中的错误消息。
这只是余皓回答的一个例证。
请不要害怕,这只是一些 Pascal 程序的摘录:-)
procedure TForm1.Button1Click(Sender: TObject);
const
Script = 'a = 56+'; // luaL_loadstring() would fail to load this code
var
L: Plua_State;
begin
// Start Lua;
L := luaL_newstate;
if L <> nil then
try
// Load Lua libraries
luaL_openlibs(L);
// Load the string containing the script we are going to run
if luaL_loadstring(L, PChar(Script)) <> 0 then
// If something went wrong, error message is at the top of the stack
ShowMessage('Failed to load() script'#10+String(lua_tostring(L, -1)))
else begin
// Ask Lua to run script
if lua_pcall(L, 0, 0, 0) <> 0 then
ShowMessage('Failed to run script'#10+String(lua_tostring(L, -1)))
else begin
lua_getglobal(L, 'a');
ShowMessage('OK'#10'a = ' + IntToStr(lua_tointeger(L, -1)));
end;
end;
finally
// Close Lua;
lua_close(L);
end;
end;