Функция CreateUnoValue

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

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

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

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


Синтаксис:

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

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

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

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

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