Lua字符串不会连接

时间:2014-03-06 17:34:22

标签: winapi lua printf lua-alien

我正在尝试连接变量以使我的输出“更漂亮”,但是当它与其他字符串值连接时,它似乎输出为空字符串。

输出代码摘录如下所示:

local name = ""

local SendMessage = alien.User32.SendMessageA
SendMessage:types{ret = "int", abi = "stdcall", "pointer", "int", "int", "string"}

SendMessage(handle, LB_GETTEXT, index, name)

print(type(name)) --To verify that it is a string type
print(name) --Prints the name "Sample 1" perfectly fine
print("Title: " .. name .. "\n") --Doesn't print the name variable "Sample 1"

输出:

Output

通过Alien for Lua来自name的{​​{3}}来设置User32.dll变量。我认为这可能是问题的一部分,但是如上所述,变量设置为键入(Lua)“string”并在自身调用时打印正常。但是,每当你将它与任何东西连接起来时,它就像空字符串(或类似的东西)。

编辑:我还尝试了tostring(name)alien.tostring(name)。两者都没有解决问题。

1 个答案:

答案 0 :(得分:3)

经过大量的试验和错误以及阅读Lua Alien documentation后,我发现使用Alien Buffer解决了在混合C-Lua字符串和本机Lua字符串之间进行转换的问题: / p>

local name = alien.buffer()
print("Title: " .. name:tostring() .. "\n")

然后,您可以随时对变量使用tostring()方法来获取本机Lua字符串。

注意:缓冲区变量的类型为userdata。如果你试图单独打印它,它会显示它的内容,但是如果你尝试将它连接成一个字符串(没有:tostring()),Lua将抛出一个错误,因为你无法连接stringuserdata