imgui.InputInt

RaMero

Известный
Автор темы
445
133
Версия 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,115
755
Как сделать, чтобы это чудовище 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?

Известный
Проверенный
457
419
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

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