Obsah
Rejstřík 🔎︎

# Funkce CreateUnoValue

Vrátí objekt, který představuje striktně typovou hodnotu odkazující na typ Uno.

Tento objekt se automaticky pří předání do Uno převede na odpovídající typ. Typ musí být určen plně kvalifikovaným názvem typu Uno.

LibreOffice API často používá typ Any. Je opakem typu Variant známého z jiných prostředí. Typ Any obsahuje jeden určený typ Uno a používají jej obecná Uno rozhraní.

### Syntaxe:

oUnoValue = CreateUnoValue( "[]byte", MyBasicValue ) ' pro získání sekvence bajtů.

Pokud nelze CreateUnoValue převést na určený typ Uno, dojde k chybě. Pro převod se používá služba com.sun.star.script.Converte.

Tato funkce je určena pro použití v situacích, kdy nepostačuje základní mechanismus převodu z typu Basic na typ Uno. K tomu dojde, pokud se z LibreOffice Basic snažíte přistupovat k obecnému Any založenému na rozhraních, jako např. XPropertySet::setPropertyValue( Name, Value ) nebo X???Container::insertBy???( ???, Value ). Basic tyto typy nerozezná, jelikož jsou definovány jen v příslušné službě.

V takové situaci LibreOffice Basic vybere nejlepší odpovídající typ pro typ Basicu, který chcete převést. Ovšem pokud typ vybere špatně, dojde k chybě. Proto pro vytvoření hodnoty neznámého typu Uno použijte funkci CreateUnoValue().

Tuto funkci je také možné použít pro předávání hodnot jiných typů než Any. To však nedoporučujeme. Pokud jazyk Basic již zná cílový typ, použitím funkce CreateUnoValue() jen vyvoláte další převodní operaci, která zpomalí běh programu.