2016-05-25 8 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; 

Afuaのコードは有効ですか? "構文エラー"はあまり記述的ではなく、私はルアに敏感ではありませんが、私はどこで間違いを探すべきか分かりません。

+1

試してみてください。var s:AnsiString; –

+0

@EgorSkriptunoffありがとうございました。私はそれを受け入れることができるので、回答を投稿したいかもしれません。 – Mystery

+0

Egorは主にコメントします。答えには、彼が通常は下にある長さの制限がある;)。あなた自身の答えを掲示して受け入れてください。 –

答えて

1

LuaはUTF-16文字列では機能しません。
データが1バイトコードページでエンコードされるようにするには、StringとPCharの代わりにAnsiStringPAnsiCharを使用してください。

+0

Freepascalのデフォルトモードpchar = pansicharとstring = ansistring –

+0

@MarcovandeVoort - デフォルトではあります。 –

関連する問題