TSVariator
Механизм чтобы хранить и получать значения различных свойств из одного текста.
Например в электронной таблице чтобы не плодить множество колонок под каждое свойство можно записать все их в ячейку одной колонки.
При этом количество свойст может быть любое.
Обращение для решения вариатора.
int ires = ts_json(int iJSON, "tsvariator", "apply", int what_answere_if_notexist);
Здесь:
ires - результат команды, если 0 - значит без ошибок и значение искомого свойства задано.
В ином случае - либо ошибка, либо искомого свойства нет в тексте.
what_answere_if_notexist - что вернуть при отсутствии запрашиваемого свойства. Если 0 - то вернуть содержимое переменной запроса. Если 1 - то вернуть значение из свойства "По умолчанию".
Пример записи текста в формате TSVariator:
{ "TSVariator":
[
{"Result":"Нет",
"SourceVarValue" : "По умолчанию",
"Comment" : "По умолчанию, если нет параметра"
},
{
"SourceVarValue": "Ширина профиля",
"Result" : "50",
"Comment" : ""
},
{
"SourceVarValue": "Толщина утеплителя",
"Result" : "50",
"Comment" : ""
},
{
"SourceVarValue": "Огнестойкость",
"Result" : "Нет",
"Comment" : "для отметки огнестойкости пп у элемента"
},
{
"SourceVarValue": "Влагостойкость",
"Result" : "Нет",
"Comment" : "для отметки влагостойкости пп у элемента"
}],
"SourceVarName":"Свойство"
}
В квадратных скобках заключен массив классов переменных.
Каждая переменная имеет имя ("SourceVarValue"), примечание ("Comment") и значение ("Result").
"SourceVarName" - имя внешней переменной в коде скрипта, которая используется для получения данных.
В примере имя этой переменной - "Свойство";
Весь текст можно поместить в одну ячейку электронной таблицы и получать из нее значения различных свойств по их названиям ("Ширина профиля", "Толщина профиля" и т.д.). Если запрашиваемого свойства в тексте нет, то выдается значение из первой записи (в примере это значение - "Нет").
Пример.
Получить значение свойства "Огнестойкость" из текста в примере выше.
string sexample; // переменная в которой находится текст из примера выше
var_extern_set("Свойство", "Огнестойкость"); // записать во внешнюю переменную с именем "Свойство" имя свойства, которое хотим считать из текста.
int iJSON;
object("create", "ts_json", iJSON); // создадим объект типа ts_gson
string sresult;
ts_json(iJSON, "DecodeFromString", sexample);
ires = ts_json(iJSON, "tsvariator", "apply", 1); // если не найдена переменная - вернуть значение по умолчанию sresult = ac_getstrvalue();
сout << "Значение огнестойкости = " << sretuls << "\n";
object("delete",iJSON); // удалить объект