- 402
- 96
- Версия MoonLoader
- .026-beta
Помогите пожалуйста, эти каллбеки меня полностью изнасиловали. Я не понимаю, почему им не нравится цикл:
Создал кастомный инпут текст с 4 инпутами и сделал фильтр на пропуск только '0' и '1'. При использовании функции, при вводе что-то в инпут - зависает и крашит. Если просто создать 4 инпута без цикла, все будет работать. Я вообще не понимаю почему. Что тут происходит.
Хотя если установить ключи
local input = { [1] = imgui.new.char[4 + 1](), [1] = imgui.new.char[4 + 1](), [2] = imgui.new.char[4 + 1](), [3] = imgui.new.char[4 + 1]() }
и перебивать циклом pairs, то вроде работает. Но почему через
for i =1, 4 do не работает? Индексация таблиц с 1 начинается же..
up
Создал кастомный инпут текст с 4 инпутами и сделал фильтр на пропуск только '0' и '1'. При использовании функции, при вводе что-то в инпут - зависает и крашит. Если просто создать 4 инпута без цикла, все будет работать. Я вообще не понимаю почему. Что тут происходит.
Lua:
local imgui, ffi = require('mimgui'), require('ffi')
local input = { imgui.new.char[4 + 1](), imgui.new.char[4 + 1](), imgui.new.char[4 + 1](), imgui.new.char[4 + 1]() }
local callback = ffi.cast("int(*)(ImGuiInputTextCallbackData*)", function(data)
local result, char = pcall(string.char, data.EventChar)
return (not result or char:find("[01]")) and 0 or 1
end)
local InputText4 = function(buffers, callback)
--for i = 1, 4 do
-- local bufferStr = ffi.string(buffers[i])
-- if #bufferStr < 4 then
-- local rep = string.rep("-", 4)
-- ffi.copy(buffers[i], rep)
-- end
--end
for i = 1, 4 do
imgui.InputText('##'..i, buffers[i], ffi.sizeof(buffers[i]), imgui.InputTextFlags.CallbackCharFilter, callback)
end
end
imgui.OnFrame(function() return true end,
function()
--InputText4(input, callback) -- зависание..краш
-- каким-то хуем работает
imgui.InputText('##1', input[1], ffi.sizeof(input[1]), imgui.InputTextFlags.CallbackCharFilter, callback)
imgui.InputText('##2', input[2], ffi.sizeof(input[2]), imgui.InputTextFlags.CallbackCharFilter, callback)
imgui.InputText('##3', input[3], ffi.sizeof(input[3]), imgui.InputTextFlags.CallbackCharFilter, callback)
imgui.InputText('##4', input[4], ffi.sizeof(input[4]), imgui.InputTextFlags.CallbackCharFilter, callback)
end
)
Хотя если установить ключи
local input = { [1] = imgui.new.char[4 + 1](), [1] = imgui.new.char[4 + 1](), [2] = imgui.new.char[4 + 1](), [3] = imgui.new.char[4 + 1]() }
и перебивать циклом pairs, то вроде работает. Но почему через
for i =1, 4 do не работает? Индексация таблиц с 1 начинается же..
up
Последнее редактирование: