imgui.InputInt

ChаtGPT

Активный
Автор темы
403
97
Версия MoonLoader
.026-beta
Как сделать, чтобы это чудовище imgui.InputInt(u8'Начало', start, 0) не заменяло "00", или "000", или короче поняли на просто "0"(или "01" на просто "1")?

Если подумать, то можно его выбросить и поставить imgui.InputText, но у меня почему-то заменяется, как с InputInt :/
Lua:
local ini = inicfg.load({
    config = {
        start = '0'
    }
}, 'Test.ini')

local start = new.char[256](tostring(ini.config.start))

if imgui.InputText(u8'Начало', start, ffi.sizeof(start)) then
    ini.config.start = ffi.string(start)
    save()
end

В конфиг сохраняет нормально ("000"), но отображается в инпуте ненормально ("0").
 
Последнее редактирование:
  • Клоун
Реакции: XRLM и Corenale
Решение
Lua:
local a = ffi.cast("void*", imgui.new.int(1))
local b = ffi.cast("const void*", imgui.new.int(1)) -- шаг плюса
local c = ffi.cast("const void*", imgui.new.int(-1)) -- шаг минуса

-- в фрейме
if imgui.InputScalar("##number", imgui.DataType.S32, a, b, c, "%05d") then
  local value = ffi.cast("int*", a)[0] -- значение в буфере, если хочешь сохранить нули, то используй string.format
end

1718430118231.png

VanoKLR

Известный
946
572
Как сделать, чтобы это чудовище imgui.InputInt(u8'Начало', start, 0) не заменяло "00", или "000", или короче поняли на просто "0"(или "01" на просто "1")?

Если подумать, то можно его выбросить и поставить imgui.InputText, но у меня почему-то заменяется, как с InputInt :/
Lua:
local ini = inicfg.load({
    config = {
        start = '0'
    }
}, 'Test.ini')

local start = new.char[256](tostring(ini.config.start))

if imgui.InputText(u8'Начало', start, ffi.sizeof(start)) then
    ini.config.start = ffi.string(start)
    save()
end

В конфиг сохраняет нормально ("000"), но отображается в инпуте ненормально ("0").
Int -> Float??
 

wojciech?

Известный
Проверенный
390
288
Lua:
local a = ffi.cast("void*", imgui.new.int(1))
local b = ffi.cast("const void*", imgui.new.int(1)) -- шаг плюса
local c = ffi.cast("const void*", imgui.new.int(-1)) -- шаг минуса

-- в фрейме
if imgui.InputScalar("##number", imgui.DataType.S32, a, b, c, "%05d") then
  local value = ffi.cast("int*", a)[0] -- значение в буфере, если хочешь сохранить нули, то используй string.format
end

1718430118231.png
 
  • Нравится
Реакции: ChаtGPT

ChаtGPT

Активный
Автор темы
403
97
Lua:
local a = ffi.cast("void*", imgui.new.int(1))
local b = ffi.cast("const void*", imgui.new.int(1)) -- шаг плюса
local c = ffi.cast("const void*", imgui.new.int(-1)) -- шаг минуса

-- в фрейме
if imgui.InputScalar("##number", imgui.DataType.S32, a, b, c, "%05d") then
  local value = ffi.cast("int*", a)[0] -- значение в буфере, если хочешь сохранить нули, то используй string.format
end

Посмотреть вложение 243475
Спасибо 😄