Съдържание

# Функция CreateUnoValue

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

Този обект се преобразува автоматично към тип Any от съответния тип, когато се предава към Uno. Типът трябва да бъде зададен като напълно квалифицирано име на тип на Uno.

Типът Any се използва често в програмния интерфейс LibreOffice API. Той съответства на типа Variant, използван в други среди за програмиране. Променливите от тип Any могат съдържат произволен тип на Uno и се използват в общите интерфейси на Uno.

### Синтаксис:

      CreateUnoValue(Type As String, Value As Object) As Object

### Резултат:

Object

### Параметри:

Type: напълно квалифицираното име на тип на Uno. Поддържаните типове данни са void, char, boolean, byte, short, unsigned short, long, unsigned long, hyper, unsigned hyper, float, double, string, type и any. В имената малките и главните букви се различават, а пред тях може да се поставят квадратни скоби, за да се укаже масив.

Value: стойност със строг тип.

       byte_sequence_object = CreateUnoValue("[]byte", Array(85, 3, 27))

### Кодове за грешка:

Ако CreateUnoValue не може да преобразува стойността към зададения тип на Uno, възниква грешка. За преобразуване се използва услугата com.sun.star.script.Converter.

### Пример:

Тази функция е предназначена за случаи, в които подразбираният механизъм за преобразуване на типове от Basic към Uno е недостатъчен. Така е при извикване на общи методи на API, базирани на Any, например com.sun.star.beans.XPropertySet.setPropertyValue() или com.sun.star.container.XNameContainer.insertByName(). CreateUnoValue() задава обект стойност за неизвестния тип на Uno.

В този пример е използван методът com.sun.star.beans.XPropertySet.addProperty(), за да се създаде свойство на документ, чиито подразбирани стойности изискват употреба на CreateUnoValue():

      With ThisComponent.DocumentProperties.getUserDefinedProperties()
          .addProperty("FOO", com.sun.star.beans.PropertyAttribute.REMOVEABLE, CreateUnoValue("double", 23))
      End With

Можете да използвате тази функция и за предаване на стойности не от тип Any, но това не се препоръчва. Ако Basic познава целевия тип, използването на CreateUnoValue() ще доведе до излишни преобразувания, които само ще забавят изпълнението на кода на Basic.