gpt4 book ai didi

winapi - Lua 字符串不会连接

转载 作者:行者123 更新时间:2023-12-01 23:59:24 24 4
gpt4 key购买 nike

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

输出代码摘录如下所示:

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

name 变量是通过 Alien for Lua 设置的调用 WINAPI SendMessage function来自 User32.dll。我认为这可能是问题的一部分,但是正如您在上面看到的那样,该变量设置为类型 (Lua)“string”,并且在其自身调用时打印正常。但是,无论何时将它与任何内容连接起来,它的作用都像空字符串(或类似的东西)。

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

最佳答案

经过大量试验和错误以及阅读 Lua Alien documentation ,我发现使用 Alien Buffer 解决了混合 C-Lua 字符串和原生 Lua 字符串之间的转换问题:

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

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

注意:缓冲区变量的类型为userdata。如果你试图自己打印出来,它会显示它的内容,但是如果你试图像字符串一样连接它(没有 :tostring())Lua 会抛出一个错误,因为你不能连接带有 userdatastring

关于winapi - Lua 字符串不会连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22231827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com