imgui.InputInt

RaMero

Известный
Автор темы
436
126
Версия 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

Известный
1,020
651
Как сделать, чтобы это чудовище 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?

Известный
Проверенный
421
368
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
 
  • Нравится
Реакции: RaMero

RaMero

Известный
Автор темы
436
126
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
Спасибо 😄