Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.16. Работа с динамическими переменными
Описываются функции, обеспечивающие создание, удаление и подписку на динамические переменные (см. §2.6 руководства программиста).
А.5.16.1. rdsCreateAndSubscribeDV – создать динамическую переменную и подписаться на нее
Функция rdsCreateAndSubscribeDV создает динамическую переменную указанного типа в указанном блоке и подписывает на нее блок, вызвавший эту функцию.
RDS_PDYNVARLINK RDSCALL rdsCreateAndSubscribeDVA( int Block, // Место создания (RDS_DV*) RDSCSTR VarName, // Имя переменной (UTF8) RDSCSTR VarType, // Тип переменной (UTF8) BOOL Fixed, // Запрет удаления RDSCSTR Init // Начальное значение (UTF8) ); RDS_PDYNVARLINK RDSCALL rdsCreateAndSubscribeDVW( int Block, // Место создания (RDS_DV*) RDSWCSTR VarName, // Имя переменной (UTF16) RDSWCSTR VarType, // Тип переменной (UTF16) BOOL Fixed, // Запрет удаления RDSWCSTR Init // Начальное значение (UTF16) ); // Функция-псевдоним RDS_PDYNVARLINK RDSCALL rdsCreateAndSubscribeDV( int Block, // Место создания (RDS_DV*) RDSXCSTR VarName, // Имя переменной (кодировка по умолчанию) RDSXCSTR VarType, // Тип переменной (кодировка по умолчанию) BOOL Fixed, // Запрет удаления RDSXCSTR Init // Начальное значение (кодировка по умолчанию) );
Тип указателя на эту функцию
RDS_DvISSBS (для UTF8) или RDS_DvIWsWsBWs (для UTF16)
Параметры
- Block (int)
- Одна из констант, указывающих на блок, в котором динамическая
переменная будет создана:
RDS_DVSELF Переменная будет создана в вызвавшем функцию блоке. RDS_DVPARENT Переменная будет создана в родительской подсистеме вызвавшего функцию блока. RDS_DVROOT Переменная будет создана в корневой подсистеме схемы. - VarName (RDSCSTR, RDSWCSTR, RDSXCSTR)
- Указатель на строку с именем создаваемой переменной.
- VarType (RDSCSTR, RDSWCSTR, RDSXCSTR)
- Указатель на строку типа создаваемой переменной. Эта строка состоит из одного (для простых переменных) или нескольких (для структур и матриц) символов RDS_VARTYPE_*.
- Fixed (BOOL)
- TRUE, если удалять эту переменную разрешено только создавшему ее блоку, то есть блоку, вызвавшему эту функцию. FALSE, если удалить переменную может любой блок.
- Init (RDSCSTR, RDSWCSTR, RDSXCSTR)
- Указатель на строку, содержащую описание значения переменной по умолчанию, составленное по правилам RDS (см. описание функции rdsSetBlockVarDefValueStr). В этом параметре можно передать NULL, если значение созданной переменной устанавливать не нужно.
Возвращаемое значение
Указатель на созданную во внутренней памяти RDS структуру подписки RDS_DYNVARLINK или NULL, если создать переменную не удалось (например, если переменная с таким именем уже есть в указанном блоке).
Примечания
Эта функция создает новую динамическую переменную с именем VarName и типом VarType в вызвавшем функцию блоке (при Block==RDS_DVSELF), его родительской подсистеме (при Block==RDS_DVPARENT) или в корневой подсистеме (при Block==RDS_DVROOT). В параметре VarType передается строка типа переменной, составленная по правилам RDS: например, для вещественного числа – «D», для матрицы целых чисел – «MI», для структуры из двух вещественных чисел, как бы ни назывался тип этой структуры – «{DD}». При успешном создании переменной функция сразу же подписывает на нее вызвавший блок и возвращает указатель на структуру подписки RDS_DYNVARLINK, используя поля которой модель блока будет обращаться к переменной.
Пример
Примеры использования функции rdsCreateAndSubscribeDV приведены в §2.6.3 и §2.6.5 руководства программиста.
См. также
RDS_DYNVARLINK, rdsSetBlockVarDefValueStr, rdsDeleteDVByLink, rdsDeleteDynamicVar.