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

Описания RDS

Приложения

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

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

А.5.14. Общие функции работы с переменными блока

А.5.14.8. rdsFindBlockVar – найти переменную блока по имени

# Приложения

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

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

#### А.5.14. Общие функции работы с переменными блока

##### А.5.14.8. rdsFindBlockVar – найти переменную блока по имени

Функция rdsFindBlockVar ищет статическую переменную с указанным именем в указанном блоке и возвращает ее уникальный идентификатор.

      RDS_VHANDLE RDSCALL rdsFindBlockVarA(
        RDS_BHANDLE Block,         // Идентификатор блока
        RDSCSTR VarName,           // Имя переменной (UTF8)
        BOOL FullName,             // В имени могут быть поля
        RDS_PVARDESCRIPTION pDescr // Заполняемое описание
      );
      RDS_VHANDLE RDSCALL rdsFindBlockVarW(
        RDS_BHANDLE Block,         // Идентификатор блока
        RDSWCSTR VarName,          // Имя переменной (UTF16)
        BOOL FullName,             // В имени могут быть поля
        RDS_PVARDESCRIPTION pDescr // Заполняемое описание
      );
      // Функция-псевдоним
      RDS_VHANDLE RDSCALL rdsFindBlockVar(
        RDS_BHANDLE Block,         // Идентификатор блока
        RDSXCSTR VarName,          // Имя переменной (кодировка по умолчанию)
        BOOL FullName,             // В имени могут быть поля
        RDS_PVARDESCRIPTION pDescr // Заполняемое описание
      );

Тип указателя на эту функцию

RDS_VhBhSBVd (для UTF8) или RDS_VhBhWsBVd (для UTF16)

Параметры

Block(RDS_BHANDLE)
  Идентификатор блока, в котором нужно найти переменную.
VarName(RDSCSTR,RDSWCSTR,RDSXCSTR)
  Указатель на строку с именем переменной.
FullName(BOOL)
  TRUE – в параметре VarName передано имя переменной с возможным указанием полей структур и элементов массивов и матриц. FALSE – в VarName передано имя переменной, непосредственно находящейся в блоке (функция в этом случае выполняется несколько быстрее).
pDescr(RDS_PVARDESCRIPTION)
  Указатель на структуру описания переменной RDS_VARDESCRIPTION, которую функция должна заполнить параметрами найденной переменной. Если вызывающей программе не нужно описание переменной, в этом параметре можно передать NULL.

Возвращаемое значение

Идентификатор найденной переменной (тип RDS_VHANDLE) или NULL, если переменной с именем VarName нет в блоке Block.

Примечания

Эта функция позволяет найти идентификатор статической переменной блока Block по имени этой переменной VarName. К имени переменной может быть добавлено имя поля, если эта переменная – структура, или индекс элемента, если переменная – массив. В этом случае в параметре FullName необходимо передать значение TRUE, и функция вернет не идентификатор самой переменной блока, а идентификатор поля структуры или элемента массива, которые, с точки зрения RDS, являются вложенными переменными. Допустим, например, что в блоке Block есть следующие переменные:

- вещественная (double) переменная «x»;
- структура «in» типа «Complex», содержащая вещественные поля «Re» и «Im»;
- матрица целых чисел «Y»;
- массив «out» структур «Complex».

В этом случае вызовы функции rdsFindBlockVar будет возвращать следующие идентификаторы:

VarName | Возврат при FullName=TRUE | Возврат при FullName=FALSE
--- | --- | ---
«x» | переменная «x» | переменная «x»
«in» | переменная «in» | переменная «in»
«out» | переменная «out» | переменная «out»
«in.Re» | поле «Re» структуры «in» | NULL
«Y[0][1]» | элемент матрицы «Y» | NULL
«out[3]» | элемент массива «out» (структура типа «Complex») | NULL
«out[1].Im» | поле «Im» структуры, являющейся элементом массива «out» | NULL

Следует помнить, что все элементы конкретной матрицы (массива) в RDS обслуживаются единственной вложенной переменной с типом элемента этой матрицы – при работе этой вложенной переменной автоматически передаются базовые адреса конкретных элементов. Таким образом, вызов rdsFindBlockVar для «out[0]», «out[1]», «out[2]» и т.д. будет возвращать один и тот же идентификатор переменной-элемента массива «out».

См. также

rdsGetBlockVar, rdsGetVarField, RDS_VARDESCRIPTION.