inicfg

schtolz

Известный
Автор темы
111
66
Версия MoonLoader
.026-beta
[section1]
value=1
[section2]
value=2
Возможно ли через section2 обратиться к section1 ? Так скажем обратиться к предыдущей от этой секции ? У меня секция получает название динамически, поэтому предварительно как называется предыдущая секция я знать не могу
Я обращаюсь к section2 так: mainIni[dynamicSection].value
 

RedHolms

Известный
Проверенный
617
360
юзать json не вариант? ini для хранения массивов не предназначен
!!! НЕ ПРОСТО КОПИПАСТЬ, ЭТО ПРИМЕР, ОН НЕ ЗАВЕДЁТСЯ !!!
Lua:
local settings = {
   setting = true,
   sub_settings = {
     sub_setting = "hello, world!"
     sub_sub_settings = {
       ultra_sub_settings = 10,
       array = {
         10, 11, 12, { [10] = true }
       }
     }
   }

   load = nil,
   save = nil
}

function settings:load()
   debug("loading settings...")

   local f, err = io.open(CFG_SETTINGS_FILEPATH, "r")
   if not f then
      debug("failed to load settings: ", err)
      return
   end

   local c = f:read("*a")
   f:close()

   local loaded = decodeJson(c)
   if loaded then
      table.merge(self, loaded)
   end

   if not self.debug then
      print("NOTE!! debug mode disabled !!")
   end
end

function settings:save()
   debug("saving settings...")

   local f, err = io.open(CFG_SETTINGS_FILEPATH, "w+")
   if not f then
      debug("failed to save settings: ", err)
      return
   end

   local to_encode = table.copy(self)

   _prepare_table_for_json(to_encode)

   local encoded = encodeJson(to_encode)
   if encoded then
      f:write(encoded)
   end

   f:close()
end
 

schtolz

Известный
Автор темы
111
66
юзать json не вариант? ini для хранения массивов не предназначен
!!! НЕ ПРОСТО КОПИПАСТЬ, ЭТО ПРИМЕР, ОН НЕ ЗАВЕДЁТСЯ !!!
Lua:
local settings = {
   setting = true,
   sub_settings = {
     sub_setting = "hello, world!"
     sub_sub_settings = {
       ultra_sub_settings = 10,
       array = {
         10, 11, 12, { [10] = true }
       }
     }
   }

   load = nil,
   save = nil
}

function settings:load()
   debug("loading settings...")

   local f, err = io.open(CFG_SETTINGS_FILEPATH, "r")
   if not f then
      debug("failed to load settings: ", err)
      return
   end

   local c = f:read("*a")
   f:close()

   local loaded = decodeJson(c)
   if loaded then
      table.merge(self, loaded)
   end

   if not self.debug then
      print("NOTE!! debug mode disabled !!")
   end
end

function settings:save()
   debug("saving settings...")

   local f, err = io.open(CFG_SETTINGS_FILEPATH, "w+")
   if not f then
      debug("failed to save settings: ", err)
      return
   end

   local to_encode = table.copy(self)

   _prepare_table_for_json(to_encode)

   local encoded = encodeJson(to_encode)
   if encoded then
      f:write(encoded)
   end

   f:close()
end
Вариант, просто свой скрипт уже через ini начал делать. Вот думаю, есть ли возможность взять индекс ключа section2 ? Это же таблица, а таблицы, это массивы, а у каждого элемента массива есть индекс. Я подумал, если я смогу обратиться к ключу через индекс элемента, то к предыдущему я смогу обратиться
 
  • Нравится
Реакции: RedHolms

RedHolms

Известный
Проверенный
617
360
Вариант, просто свой скрипт уже через ini начал делать. Вот думаю, есть ли возможность взять индекс ключа section2 ? Это же таблица, а таблицы, это массивы, а у каждого элемента массива есть индекс
конечно советую переписать на json, там различий не много, но окей

не совсем понял, что ты хочешь, лучше скажи, где и для чего тебе нужно перебирать элементы (еще лучше скинуть код), там уже будет понятно
 

schtolz

Известный
Автор темы
111
66
конечно советую переписать на json, там различий не много, но окей

не совсем понял, что ты хочешь, лучше скажи, где и для чего тебе нужно перебирать элементы (еще лучше скинуть код), там уже будет понятно
[section1]
value=1
[section2]
value=2
Я хочу узнать индекс [section2]. Как обратиться к section2 не по ее имени, а по ее индексу. Пока что нашел информацию о том, что можно так MainIni[0][0].value, но пока что это не работает.