Функция CreateUnoValue

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

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

Икона Бележка

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


Синтаксис:


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

Тип на резултата:

Object

Параметри:

Име

Тип

Описание

Type

String

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

Value

Object

Стойност със строг тип.


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

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

Пример:


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

Пример:

Тази функция е предназначена за случаи, в които подразбираният механизъм за преобразуване на типове от 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.

Моля, подкрепете ни!

Моля, подкрепете ни!