Page 1 of 1

ini_lite.inc

Posted: Mon Aug 09, 2010 4:35 am
by konstantin_666.
ini_lite.inc - небольшая библиотека для чтения файлов настройки. Написана с нуля.
Не является полным аналогом 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
А доступ к строке можно получить через переменную dword[Ini.KeyPtr], в которой хранится указатель на значение ключа.
Надеюсь, эта библиотека поможет сделать вашу программу более компактной и конфигурируемой.
Если чего, пишите, версия ведь тестовая.

Re: ini_lite.inc

Posted: Sun Aug 22, 2010 11:21 am
by Gluk
нереентерабельна?