Сейчас я Вам расскажу о одной странной ситуации замеченной мною при работе с ini_getString.
Когда я создавал переменные вида
enum Название блока enum
{
Текстовая переменная1[значение],Текстовая переменная2[значение],
};
new Переменная[Значение][Название блока enum];
Затем открываю файл способом:
new FO_Acc = ini_openFile(Путь к файлу); ini_getString(FO_Acc, "Ключ 1", Переменная[Значение][Текстовая переменная1]); ini_getString(FO_Acc, "Ключ 2", Переменная[Значение][Текстовая переменная2]); ini_closeFile(FO_Acc);
Перменные Переменная[Значение][Текстовая переменная1] и Переменная[Значение][Текстовая переменная2] обнулялись, то есть становились равными значениям "".
Так вот, у этой ситуации есть решение.
Открываем инклуд mxINI, и ко всем дефайнам добавляем:
#define mxINI_rg_do(%0[%1][%2],%3,%4(%5,%6,%7)) new bool:FALSE=false;do{new %7[%3];%4(%5,%6,%7);format(%0[%1][%2],%3,"%s", %7);}while(FALSE)
#define mxINI_rg(%0[%1][%2],%3,%4(%5,%6,%7)) do{new %7[%3];%4(%5,%6,%7);format(%0[%1][%2],%3,"%s", %7);}while(FALSE)
Как использовать?:
Если Вам надо записать одну переменную вида Переменная[Значение][Текстовая переменная1], используете:
mxINI_rg_do(Переменная[Значение][Текстовая переменная1], ЗНАЧЕНИЕ 1*, ini_getString(FO_Acc, "Ключ 1", varone));
Если надо записать несколько:
mxINI_rg_do(Переменная[Значение][Текстовая переменная1], ЗНАЧЕНИЕ 1*, ini_getString(FO_Acc, "Ключ 1", varone)); mxINI_rg(Переменная[Значение][Текстовая переменная2], ЗНАЧЕНИЕ 1*, ini_getString(FO_Acc, "Ключ 2", var));
Что такое "ЗНАЧЕНИЕ 1" - это размер данных, находящихся в ключе файла.
Если кто-то знает, чем связано такое поведение mxINI (ini_getString), отпишитесь и какие методы используете.
Сообщение отредактировал suza: 12 января 2016 - 16:15
Вход
Регистрация
Помощь

Тема закрыта









