我想连接一个变量,使我的输出“漂亮”,但它似乎输出为与其他字符串值连接时的空字符串。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)) --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"
输出:
name
的可变经由Alien for Lua呼叫从User32.dll
设置为WINAPI SendMessage function。我认为这可能是问题的一部分,但正如你在上面看到的那样,变量被设置为键入(Lua)“string”,并在被自己调用时打印正确。但是,无论何时将它与任何东西连接起来,它都像空字符串(或类似的东西)一样。
编辑:我也试过tostring(name)
和alien.tostring(name)
。这两者都不能解决问题。
您是否尝试过'reallyualuatring = alien.tostring(name)'后跟'print(“标题:”.. reallyALuaString ..“\ n”)'? –
它崩溃,错误“预期的用户数据,得到的字符串”。 – MrHappyAsthma
Lua字符串是不可变的。虽然C API允许它们转换为const char *,但不允许修改它们的内容。外星人不能破坏该合约,最好它可以创建一个全新的Lua字符串来分配给变量,并且必须知道预先分配一个缓冲区以接收来自'SendMessage()'的结果。 – RBerteig