Навигация:
<< >> Оглавление Указатель

Приложения

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

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

А.5.6. Операции с блоками и связями

А.5.6.4. rdsBlockOrConnByExtId – блок или связь по внешнему идентификатору

Функция rdsBlockOrConnByExtId ищет блок, связь или шину по уникальному целому идентификатору.

    rdsBlockOrConnByExtId(
     Parent,           // Родительская подсистема
     ExtId,                  // Целый идентификатор
     pData    // Результаты поиска
  );

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

RDS_BBhDwFbei

Параметры

Parent (RDS_BHANDLE)
Идентификатор подсистемы, начиная с которой нужно искать блок, связь или шину – поиск будет осуществляться в этой подсистеме и во всех ее внутренних подсистемах, независимо от уровня вложенности. Если нужно искать блок во всей загруженной схеме, в этом параметре можно передать NULL.
ExtId (DWORD)
Уникальный целый идентификатор блока, связи или шины.
pData (RDS_PFINDBYEXTIDDATA)
Указатель на структуру RDS_FINDBYEXTIDDATA, в которую функция запишет результат поиска. Если вызывающей программе нужно проверить, существует ли объект с идентификатором ExtId в схеме, но не требуется узнавать его внутренний идентификатор ( RDS_BHANDLE или RDS_CHANDLE), в этом параметре можно передать NULL.

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

TRUE, если блок, связь или шина с идентификатором ExtId найдены, FALSE в противном случае.

Примечания

Эта функция позволяет найти блок, связь или шину, зная его или ее уникальный целый внешний идентификатор ExtId. Параметр Parent позволяет ограничить поиск какой-либо подсистемой и ее внутренними блоками. По результатам поиска заполняется структура RDS_FINDBYEXTIDDATA: в поле Found заносится признак успешности поиска (это же значение возвращается функцией), в поле Block – внутренний идентификатор найденного блока, в поле Conn – внутренний идентификатор найденной шины или связи, в поле Type – тип найденного объекта. Только одно из полей Block и Conn будет заполнено (другое поле получит значение NULL), поскольку идентификаторы блоков и связей не пересекаются, и параметру функции ExtId будет соответствовать либо блок, либо связь или шина.

Целые идентификаторы блоков и связей используются, в основном, при включении RDS в состав других программ – в отличие от внутренних идентификаторов, они не изменяются при сохранении схемы и ее повторной загрузке. В моделях блоков и модулях автоматической компиляции чаще используются внутренние идентификаторы RDS_BHANDLE и RDS_CHANDLE, поскольку обращение к блокам и связям с их помощью выполняется гораздо быстрее. Для однозначной идентификации блока или связи в схеме можно использовать один из трех следующих способов, каждый из которых имеет свои достоинства и недостатки:

Способ идентификации Достоинства Недостатки
Полное имя блока
  • понятно для пользователя (может вводиться вручную);
  • не изменяется после сохранения схемы;
  • можно использовать при внешнем управлении RDS.
  • нельзя использовать для связей и шин;
  • изменяется при переименовании блока.
Внутренние идентификаторы
(RDS_BHANDLE и RDS_CHANDLE)
  • очень быстрый доступ к блокам и связям.
  • каждый раз присваиваются заново после загрузки схемы;
  • нельзя использовать при внешнем управлении RDS;
  • разные типы идентификаторов для блоков и связей/шин.
Внешние идентификаторы (DWORD)
  • не изменяются при сохранении схемы и переименовании блоков;
  • можно использовать при внешнем управлении RDS.
  • относительно медленный поиск блока, связи или шины по идентификатору.

См. также

RDS_BLOCKDESCRIPTION, RDS_CONNDESCRIPTION, rdsUpdateExtIdsRange.


<< >> Оглавление Указатель