Автор: frog163
Итак, что же это такое и для чего это нужно?
Это инклуд, содержащий функции для чтения/записи файлов.
Чем же хорош этот инклуд?
- Оформление файла
Любая строка не имеющая символа "=" будет считаться комментарием;
Вокруг ключа, символа "=" и до зачения ключа может быть любое кол-во пробелов;
Нет лимитов на длину ключа и его значения;
Поддержка всех символов(в том числе и кирилице) в названии файла, ключе и его значении, кроме "\r" и "\n";
Одна строка может содержать любое кол-во пар ключ/значение;
Пример:
Code: Select all
а = б = в
эта строка фактически содержит след. ключи и значения:
"а" = "б"
"а = б" = "в"
"а" = "б = в"
"б" = "в"
- Скорость
Перед тем как читать что-то из файла, его также как и остальные файлы нужно открыть. При открытии весь файл копируется в ОЗУ вместе с именем. Остальные операции чтения/записи производятся непосредственно в ОЗУ. Именно поэтому все это происходит очень быстро. Если контент файла в ОЗУ был изменен, при закрытии он будет записан на диск.
Используется сжатое хранение контента файла, что в 4 раза меньше, чем обычный формат(в обычной строке для 1 символа отводится 4 байта, в сжатой строке 1 символ занимает всего 1 байт). Скорость также достигается за счет отсутствия дополнительных функций, которые могли бы использоваться в функциях чтения/записи, а также за счет использования только встроенных функций скриптинга.
Функции инклуда:
Создание файла:
Code: Select all
ini_createFile("адрес/файла.ini", "Содержимое файла по умолчанию");
//или
ini_createFile("адрес/файла.ini");
//создаст файл если его нету, иначе вернет код ошибки
Открытие файла:
Code: Select all
ini_openFile("путь/к/файлу.ini");//откроет файл если он сущ-ет, иначе вернет код ошибки
Закрытие/сохранение файла:
Code: Select all
ini_closeFile(ID_открытого_файла);
Запись текста в файл:
Code: Select all
ini_setString(ID_открытого_файла, "имя ключа", "текстовое значение");
Запись числа в файл:
Code: Select all
ini_setInteger(ID_открытого_файла, "имя ключа", 123456);
Запись float значения в файл:
Code: Select all
ini_setFloat(ID_открытого_файла, "имя ключа", 3.1416);
Чтение текста из файла:
Code: Select all
ini_getString(ID_открытого_файла, "имя ключа", returnValue);
Чтение числа из файла:
Code: Select all
ini_getInteger(ID_открытого_файла, "имя ключа", returnValue);
Чтение float значения из файла:
Code: Select all
ini_getFloat(ID_открытого_файла, "имя ключа", returnValue);
Удаление ключа из файла:
Code: Select all
ini_removeKey(ID_открытого_файла, "имя ключа");
Вернуть код ошибки:
Code: Select all
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):
Проверка на существование файла:
Code: Select all
fexist("адрес/файла.ini");
Удаление файла:
Code: Select all
fremove("адрес/файла.ini");
Также можно добавить пару дефайнов:
Code: Select all
#define ini_existFile fexist
#define ini_removeFile fremove
Для удобство использования, например:
Code: Select all
ini_existFile("адрес/файла.ini");//Проверка на существование файла
ini_removeFile("адрес/файла.ini");//Удаление файла
Дополнительные нестандартные функции, которые возможно пригодятся вам при работе(by BJIADOKC):
Code: Select all
#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).
Пример:
Code: Select all
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);