Использование mxINI

Описание: Основы скриптинга
Модератор: SJplayer

Дим M
Автор темы, Администратор
Администратор
Аватара
Дим M
Автор темы, Администратор
Администратор
Сообщения: 1608
Зарегистрирован: 5 апреля 2013
С нами: 10 лет 11 месяцев

#1 Дим » 16 апреля 2013, 19:05

Использование mxINI
Автор: frog163

Итак, что же это такое и для чего это нужно?
Это инклуд, содержащий функции для чтения/записи файлов.

Чем же хорош этот инклуд?
  • Оформление файла

Любая строка не имеющая символа "=" будет считаться комментарием;
Вокруг ключа, символа "=" и до зачения ключа может быть любое кол-во пробелов;
Нет лимитов на длину ключа и его значения;
Поддержка всех символов(в том числе и кирилице) в названии файла, ключе и его значении, кроме "\r" и "\n";
Одна строка может содержать любое кол-во пар ключ/значение;

Пример:

Код: Выделить всё

а = б = в


эта строка фактически содержит след. ключи и значения:
"а" = "б"
"а = б" = "в"
"а" = "б = в"
"б" = "в"

  • Скорость

Перед тем как читать что-то из файла, его также как и остальные файлы нужно открыть. При открытии весь файл копируется в ОЗУ вместе с именем. Остальные операции чтения/записи производятся непосредственно в ОЗУ. Именно поэтому все это происходит очень быстро. Если контент файла в ОЗУ был изменен, при закрытии он будет записан на диск.
Используется сжатое хранение контента файла, что в 4 раза меньше, чем обычный формат(в обычной строке для 1 символа отводится 4 байта, в сжатой строке 1 символ занимает всего 1 байт). Скорость также достигается за счет отсутствия дополнительных функций, которые могли бы использоваться в функциях чтения/записи, а также за счет использования только встроенных функций скриптинга.

Функции инклуда:

Создание файла:

Код: Выделить всё

ini_createFile("адрес/файла.ini", "Содержимое файла по умолчанию"); 
//или 
ini_createFile("адрес/файла.ini"); 
//создаст файл если его нету, иначе вернет код ошибки    


Открытие файла:

Код: Выделить всё

ini_openFile("путь/к/файлу.ini");//откроет файл если он сущ-ет, иначе вернет код ошибки    


Закрытие/сохранение файла:

Код: Выделить всё

ini_closeFile(ID_открытого_файла); 


Запись текста в файл:

Код: Выделить всё

ini_setString(ID_открытого_файла, "имя ключа", "текстовое значение"); 


Запись числа в файл:

Код: Выделить всё

ini_setInteger(ID_открытого_файла, "имя ключа", 123456); 


Запись float значения в файл:

Код: Выделить всё

ini_setFloat(ID_открытого_файла, "имя ключа", 3.1416); 


Чтение текста из файла:

Код: Выделить всё

ini_getString(ID_открытого_файла, "имя ключа", returnValue); 


Чтение числа из файла:

Код: Выделить всё

ini_getInteger(ID_открытого_файла, "имя ключа", returnValue); 


Чтение float значения из файла:

Код: Выделить всё

ini_getFloat(ID_открытого_файла, "имя ключа", returnValue); 


Удаление ключа из файла:

Код: Выделить всё

ini_removeKey(ID_открытого_файла, "имя ключа"); 


Вернуть код ошибки:

Код: Выделить всё

ini_getErrorInfo(Код_ошибки); 
/*Иды ошибок: 
    INI_OK =  0,       // функция успешно выполнена 
    INI_FILE_NOT_FOUND      = -1,       // файл не найден по указанному пути 
    INI_FILE_ALREADY_EXIST  = -2,       // файл уже существует 
    INI_TOO_LARGE_FILE      = -3,       // размер файла превысил допустимый лимит 
    INI_WRONG_PATH_SIZE     = -4,       // неправильный размер пути к файлу 
    INI_READ_ERROR          = -5,       // ошибка чтения файла 
    INI_WRITE_ERROR         = -6,       // ошибка при записи в файл 
    INI_NO_FREE_SLOT        = -7,       // нет свободного слота для открытия файла 
    INI_WRONG_SLOT          = -8,       // указан неверный слот открытого файла 
    INI_KEY_NOT_FOUND       = -9,       // ключ в открытом файле не найден 
    INI_WRONG_RETURN_SIZE   = -10,      // размер строки, в которую будет помещено значение ключа - указан неверно (<= 0)*/


Дополнительные функции, потребующиеся при работе(default):

Проверка на существование файла:

Код: Выделить всё

fexist("адрес/файла.ini");


Удаление файла:

Код: Выделить всё

fremove("адрес/файла.ini");


Также можно добавить пару дефайнов:

Код: Выделить всё

#define ini_existFile fexist 
#define ini_removeFile fremove   


Для удобство использования, например:

Код: Выделить всё

ini_existFile("адрес/файла.ini");//Проверка на существование файла 
ini_removeFile("адрес/файла.ini");//Удаление файла   


Дополнительные нестандартные функции, которые возможно пригодятся вам при работе(by BJIADOKC):

Код: Выделить всё

#define ini_setBool(%1,%2,%3) %3?ini_setInteger(%1,%2,1):ini_setInteger(%1,%2,0) 
stock ini_getBool(fileID,key[],&bool:Value) 
{ 
new testint
; 
ini_getInteger
(fileID,key,testint); 
if(testint <= 0) Value = false; 
else Value 
= true; 
return 1
; 
}


C помощью этих функций вы сможете записать/прочитать из файла бинарные значения(true & false).

Пример:

Код: Выделить всё

    new file = ini_createFile("тест_инклуда.ini"); 
    new returnString
[32], returnNumber, Float: returnFloat; 

    ini_setString
(file, "ключ со строкой", "текстовое значение"); 
    ini_setInteger
(file, "ключ с числом", 123456); 
    ini_setFloat
(file, "ключ с дробью", 3.1416); 

    ini_getString
(file, "ключ со строкой", returnString); 
    ini_getInteger
(file, "ключ с числом",  returnNumber); 
    ini_getFloat
(file, "ключ с дробью",  returnFloat); 

    ini_closeFile
(file); 

    printf 
( "\n `ключ_со_строкой` = `%s`,\n `ключ_с_числом` = `%d`,\n `ключ_с_дробью` = `%f` \n", 
        returnString
, returnNumber, returnFloat);
[center]i love you [s]mxIni[/s] Mysql[/center]


Вернуться в «Основы скриптинга»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 4 гостя