Съдържание
Индекс 🔎︎

# Функция CreateUnoValue

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

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

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

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

oUnoValue = CreateUnoValue("[]byte", MyBasicValue) ' за получаване на последователност от байтове.

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

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

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

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