Текущий раздел:

Описания RDS

Приложения

Приложение А. Функции, константы и структуры RDS

А.5. Сервисные функции и макросы RDS

А.5.16. Работа с динамическими переменными

А.5.16.1. rdsCreateAndSubscribeDV – создать динамическую переменную и подписаться на нее

# Приложения

## Приложение А. Функции, константы и структуры 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.