Lua字符串不会连接。

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

输出代码片段如下:

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)) --验证它是字符串类型
print(name) --完美地打印名称“Sample 1”
print("Title: " .. name .. "\n") --不打印名称变量“Sample 1”

输出:

Output

name变量是通过从User32.dll调用Alien for LuaWINAPI SendMessage函数来设置的。 我认为这可能是问题的一部分,但是正如您在上面看到的那样,该变量设置为类型(Lua)“ string”,并且在单独调用它时可以正常打印。 但是,每当您将其与任何内容连接时,它都会像空字符串(或类似物)一样运行。

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

点赞
用户1366973
用户1366973

经过大量的尝试和阅读 Lua Alien 文档,我发现使用 Alien Buffer 可以解决在混合 C-Lua 字符串和本机 Lua 字符串之间进行转换的问题:

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

您随时可以对变量使用 tostring() 方法以获得本机 Lua 字符串。

注意:缓冲变量将是 userdata 类型。如果您尝试单独打印它,它将显示其内容,但是如果您尝试像字符串一样将其连接起来(没有 :tostring()),Lua 将抛出错误,因为您不能将 stringuserdata 连接起来。

2014-03-06 19:01:54