Module
Contents
Index 🔎︎

# CreateUnoValue Function

Возвращает объект, который является значением со строгим типом и ссылается на систему типа Uno.

При передаче Uno этот объект автоматически преобразуется в значение Any соответствующего типа. Для типа должно быть указано полное имя Uno.

Интерфейс API LibreOffice часто использует тип Any. Этот тип соответствует типу Variant в других средах. Тип Any хранит один произвольный тип Uno и используется в общих интерфейсах Uno.

## Синтаксис

    oUnoValue = CreateUnoValue( "[]byte", MyBasicValue ) ' to get a byte sequence.

В случае невозможности преобразования CreateUnoValue в указанный тип Uno возникает ошибка. Для преобразования используется служба TypeConverter.

Эта функция используется в ситуациях, когда использования стандартного механизма преобразования типов из Basic в Uno недостаточно. Это может произойти при получении доступа к общим интерфейсам на основе типа Any, например, XPropertySet::setPropertyValue( Name, Value ) или X???Container::insertBy???(???, Value ), из LibreOffice Basic. Среда выполнения Basic не умеет распознавать эти типы, так как они определяются только в соответствующих службах.

В такой ситуации LibreOffice Basic выбирает самый подходящий тип для типа Basic, который необходимо преобразовать. Однако при выборе неправильного типа возникает ошибка. Функция CreateUnoValue() служит для создания значения для неизвестного типа Uno.

Эту функцию можно также использовать для передачи значений, отличных от Any, однако делать это не рекомендуется. Если Basic известен конечный тип, использование функции CreateUnoValue() приведет к дополнительному преобразованию и к замедлению выполнения программы на Basic.