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

Описания RDS

Приложения

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

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

А.5.35. Функции поддержки автоматической компиляции моделей

А.5.35.10. rdscompRenameModel – переименовать модель

# Приложения

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

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

#### А.5.35. Функции поддержки автоматической компиляции моделей

##### А.5.35.10. rdscompRenameModel – переименовать модель

Функция rdscompRenameModel изменяет имя указанной модели в указанном модуле автокомпиляции.

      BOOL RDSCALL rdscompRenameModelA(
        RDS_COMPHANDLE Module, // Модуль автокомпиляции
        RDSCSTR OldModelName,  // Старое имя (UTF8)
        RDSCSTR NewModelName,  // Новое имя (UTF8)
        BOOL AllowReplace      // Разрешить замену модели
      );
      BOOL RDSCALL rdscompRenameModelW(
        RDS_COMPHANDLE Module, // Модуль автокомпиляции
        RDSWCSTR OldModelName, // Старое имя (UTF16)
        RDSWCSTR NewModelName, // Новое имя (UTF16)
        BOOL AllowReplace      // Разрешить замену модели
      );
      // Функция-псевдоним
      BOOL RDSCALL rdscompRenameModel(
        RDS_COMPHANDLE Module, // Модуль автокомпиляции
        RDSXCSTR OldModelName, // Старое имя (кодировка по умолчанию)
        RDSXCSTR NewModelName, // Новое имя (кодировка по умолчанию)
        BOOL AllowReplace      // Разрешить замену модели
      );

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

RDS_BChSSB (для UTF8) или RDS_BChWsWsB (для UTF16)

Параметры

Module(RDS_COMPHANDLE)
  Идентификатор модуля автоматической компиляции, который обслуживает переименовываемую модель.
OldModelName(RDSCSTR,RDSWCSTR,RDSXCSTR)
  Указатель на строку с текущим именем модели.
NewModelName(RDSCSTR,RDSWCSTR,RDSXCSTR)
  Указатель на строку с новым именем модели.
AllowReplace(BOOL)
  TRUE – если модель с именем NewModelName уже есть в модуле Module, она будет отключена от всех блоков, и к ним будет подключена переименованная модель. FALSE – если модель с именем NewModelName уже есть в модуле Module, переименование будет отменено и функция вернет FALSE.

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

TRUE – модель переименована, FALSE – в модуле Module нет модели OldModelName или, при AllowReplace==FALSE, модель NewModelName уже используется.

Примечания

Эта функция используется в тех случаях, когда необходимо изменить имя уже используемой модели (например, если в редакторе модели предусмотрена команда «Сохранить как...»). При ее вызове RDS последовательно производит следующие действия:

1. В модуле Module ищется модель с именем OldModelName. Если ее нет, функция возвращает FALSE.
2. В модуле Module ищется модель с именем NewModelName. Если она есть, и в параметре AllowReplace передано FALSE, функция возвращает FALSE.
3. Функция модуля Module вызывается для реакции на событие RDS_COMPM_CANRENMODEL. Если функция модуля запретит переименование, rdscompRenameModel вернет FALSE.
4. Из памяти RDS выгружается скомпилированная DLL модели OldModelName.
5. Если модель NewModelName существует, из памяти RDS выгружается ее скомпилированная DLL, модель отключается от всех блоков и ее данные в памяти уничтожаются. Блоки, к которым она была подключена, подключаются к модели OldModelName.
6. Имя модели OldModelName меняется на NewModelName, и модуль автокомпиляции Module вызывается для реакции на событие RDS_COMPM_MODELRENAMED.
7. Производится компиляция модели, если это необходимо, скомпилированная DLL модели загружается в память и начинает обслуживать блоки.

Кроме упомянутых событий RDS_COMPM_CANRENMODEL и RDS_COMPM_MODELRENAMED в процессе переименования модели могут возникнуть и другие: RDS_COMPM_DETACHBLOCK и RDS_COMPM_ATTACHBLOCK при передаче блоков от одной модели к другой, RDS_COMPM_MODELCLEANUP при уничтожении данных модели NewModelName и т.п.

Изменение альтернативного имени модели функцией rdscompRenameModel не предусмотрено, для этого следует использовать функцию rdscompSetAltModelName.

См. также

RDS_COMPM_CANRENMODEL, RDS_COMPM_MODELRENAMED, rdscompSetAltModelName.