Не является полным аналогом LIBINI.
Предназначена для приложений размером до 1кб, для которых нет смысла подгружать динамические библиотеки.
Не использует макросов, самостоятельно выделяет память, в общем полностью автономная.
Поддерживает windows и unix форматы завершения строки.
Несжатая скомпилированная библиотека имеет размер ~300 б. (сжатая LIBINI, с заголовком, весит ~2 Кб).
Размер и скорость достигнуты за счёт отсутствия парсинга пробелов, чувствительности к регистру, ограничения значения чисел четырьмя разрядами(можно увеличить), отсутствием сохранения регистров и передачей праметров через регистры.
Библиотека состоит из 5 функций:
1) Ini.OpenFile - открывает файл настройки.
Входной параметр: ebx - указатель на ASCIIZ имя файла.
Выходной параметр: ebx - результат (0-файл загружен/1-ошибка)
2) Ini.OpenSection - находит и открывает секцию.
Входной параметр: ebx - указатель на ASCIIZ имя секции.
Выходной параметр: ebx - результат (0-секция найдена/1-секция не найдена)
3) Ini.OpenKey - находит и открывает ключ.
Входной параметр: ebx - указатель на ASCIIZ имя ключа.
Выходной параметр: ebx - результат (0-ключ найден/1-ключ не найден)
4) Ini.CompareStrings - сравнивает строки.
Входной параметр: ebx - указатель на ASCIIZ строку.
Выходной параметр: ebx - результат (0- строки разные/1-строки одинаковые)
5) Ini.GetInt - возвращает целочисельное значение ключа.
Входной параметр: нет.
Выходной параметр: ebx - значение ключа.
Использование:
открываем файл->открываем секцию->открываем ключ
В общем всё как и в LIBINI, но обратите внимание на то, что здесь вместо функции получения указателя на строку - функция сравнения строк. Зачем это нужно? Для чтения булевых значений, которые на практике очень часто используются. Например:
Code: Select all
mov ebx,str_example
call Ini.CompareStrings
test bl,1
.....
str_example db 'yes',0
Надеюсь, эта библиотека поможет сделать вашу программу более компактной и конфигурируемой.
Если чего, пишите, версия ведь тестовая.