Как не сложно догадаться из названия, скрипт предназначен для работы с 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





Ответить с цитированием


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