2016-05-25 3 views
1

Я пытаюсь использовать lua в своем приложении, но при попытке загрузить скрипт с помощью lua_loadBuffer появляется сообщение об ошибке.Ошибка синтаксиса при загрузке сценария lua

LuaContext := lua_newstate(@Alloc, nil); 
    try 
    luaL_openlibs(LuaContext); 
    s := 'print("hi")'; 
    lua_register(LuaContext, 'print', @print_func); 
    if luaL_loadbuffer(LuaContext, PChar(s), Length(s), PChar('sample1')) <> 0 then 
    begin 
     raise Exception.Create(lua_tostring(LuaContext, -1)); //<- I get the following error message here: [string "sample1"]:1: syntax error 
    end; 
    if lua_pcall(LuaContext, 0, 0, 0) <> 0 then 
     Exception.Create(''); 
    except 
     Debugln('Error: ' + lua_tostring(LuaContext, -1)); 
    end; 

Афаик код lua действительно, не так ли? Просто «синтаксическая ошибка» не очень описательна, и у меня нет опыта с lua, я даже не знаю, где искать ошибки.

+1

Попробуйте 'var s: AnsiString;' –

+0

@EgorSkriptunoff Спасибо, это сработало. Вы можете отправить ответ, чтобы я мог его принять. – Mystery

+0

Егор в основном комментирует; ответы имеют ограничение по длине, которое он обычно находится под;). Не стесняйтесь публиковать и принимать свой собственный ответ. –

ответ

1

Lua не работает с строками UTF-16.
Чтобы гарантировать, что ваши данные закодированы с 1-байтовой кодовой страницей, используйте AnsiString и PAnsiChar вместо String и PChar.

+0

Режимы по умолчанию Freepascal pchar = pansichar и string = ansistring –

+0

@MarcovandeVoort - Да, по умолчанию. –

Смежные вопросы