inicfg

schtolz

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

RedHolms

Известный
Проверенный
621
361
юзать 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

Активный
Автор темы
107
58
юзать 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

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

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

schtolz

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

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