我想連接一個變量,使我的輸出「漂亮」,但它似乎輸出爲與其他字符串值連接時的空字符串。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