Хорошо! Хорошо!:  0
Плохо! Плохо!:  0
Показано с 1 по 7 из 7

Тема: IniFile - читаем/пишем INI-файлики

  1. #1

    По умолчанию IniFile - читаем/пишем INI-файлики

    Как не сложно догадаться из названия, скрипт предназначен для работы с INI-файлами. Прежде всего, это была тренировка для меня в обращении со строковыми правилами, так что возможны глюки, хотя я и постарался все как следует протестировать. Что же касается практического применения: можно вывести в окошко название игры, используемую библиотеку скриптов... а можно подгрузить свои собственные базы данных, если, скажем, вы решили добавить предметам Вес, а поля в интерфейсе мейкера для этого не оказалось. Естественно все это будет на виду и редактируемо простым виндосовским блокнотом, однако, с появлением чудо-анпакера, любой проект на XP или VX открыт для всеобщего обозрения... "И клянусь всеми развалинами нашего несчастного Гипата, меня это ничуть не печалит!"(с)

    Код:
    #===============================================================================
    # IniFile v1.0
    # Created by: Equilibrium Keeper [ICQ: 470355387]
    # Created on: 13.04.09 21:11:48
    #===============================================================================
    class IniFile
      #-----------------------------------------------------------------------------
      # Инициализация
      # filename :string - полный путь к файлу, относительно папки проекта
      #-----------------------------------------------------------------------------
      def initialize(filename)
        @table = {}; head = ""; param = ""; value = "";
        File.open(filename).each{|row|
          row.gsub!(/\A(\s*)|(\s*)\Z/){""}
          is_head = row[/\[[a-zA-Zа-яА-Я0-9]+\]/] ? true : false
          if is_head
            head = row
            next
          end
          row.scan(/\A([a-zA-Zа-яА-Я0-9]+)=(.*)\Z/){ |s| 
            param = $1; value = $2
          }
          @table["#{head}, #{param}"] = value
        }
      end
      #-----------------------------------------------------------------------------
      # Возвращает значение параметра в секции
      # head  :string - имя секции без скобок
      # param :string - имя параметра
      #  пример: self["Game", "Title"]
      #-----------------------------------------------------------------------------
      def [](head, param)
        return @table["[#{head}], #{param}"]
      end
      #-----------------------------------------------------------------------------
      # Задает значение параметра в секции
      # head  :string - имя секции без скобок
      # param :string - имя параметра
      # value :string - новое значение параметра
      #  пример: self["Game", "Title"] = "My First Game With Custom INI-bases"
      # Внимание!!! Метод пока не записывает данные в сами INI-файлы!
      # Результаты действия сохранятся только в пределах данного объекта.
      #-----------------------------------------------------------------------------
      def []=(head, param, value)
        @table["[#{head}], #{param}"] = value
        # Инициируем запись в файл
      end
      #-----------------------------------------------------------------------------
    end
    Последний раз редактировалось Inca; 05.06.2013 в 15:23. Причина: префикс добавил

  2. #2
    Мастер Форума Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    8,399
    Записей в дневнике
    2
    Репутация: 91 Добавить или отнять репутацию

    По умолчанию

    Я использую файлы с расширением rxdata. Одно и то же, что ини. Если каму надо то могу написать для таких файлов.

  3. #3

    По умолчанию

    Хм... Рольф, а редактируешь ты их чем? о.О
    Или это просто самосозданный текстовый файл? Тогда без разницы - к расширению читалка не привязана, подсунуть ей можно что угодно.

  4. #4
    Пользователь Аватар для insider
    Информация о пользователе
    Регистрация
    24.04.2008
    Сообщений
    86
    Репутация: 1 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Equilibrium Keeper Посмотреть сообщение
    Хм... Рольф, а редактируешь ты их чем? о.О
    Полагаю этим:
    PHP код:
    class Dummy
      attr_accessor 
    :dummy
      def initialize
        
    @dummy 666
      end
    end

    file 
    File.open("Data/Dummy.rxdata""wb")
    Marshal.dump(Dummy.new, file)
    file.close 

  5. #5

    По умолчанию

    Не, так не интересно. Нужно что-нибудь удобное с графическим интерфейсом... Вот прикрутить бы Руби к С++... Но у меня, честно говоря, нет ни времени, ни желания разбираться во всех особенностях подобного объединения. Инструкции же "для чайников" я, к сожалению, в инете не нашел.

    А так, в принципе, можно и инишники брать за основу баз, а после мукером перегонять в rxdata, после чего стирать ini, как это делают покемоноводы (кажется, именно так устроены их базы). Но это не есть идеал.

  6. #6
    Мастер Форума Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    8,399
    Записей в дневнике
    2
    Репутация: 91 Добавить или отнять репутацию

    По умолчанию

    Полагаю этим:
    Ты же мне очень давно посоветовал.

  7. #7
    Пользователь Аватар для insider
    Информация о пользователе
    Регистрация
    24.04.2008
    Сообщений
    86
    Репутация: 1 Добавить или отнять репутацию

    По умолчанию

    О_о

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •