Funktion CreateUnoValue

Gibt ein Objekt zurück, das einen in Bezug auf das Uno-Typensystem strikt typisierten Wert darstellt.

Das Objekt wird bei der Übergabe an Uno automatisch in einen Any des entsprechenden Typs konvertiert. Der Typ muss durch seinen voll qualifizierten Uno-Typennamen angegeben werden.

Notizsymbol

Die LibreOffice-API verwendet häufig den Typ "Any". Dieser ist das Gegenstück zu dem aus anderen Umgebungen bekannten Typ "Variant". Der Typ "Any" nimmt einen beliebigen Uno-Typ auf und wird in generischen Uno-Schnittstellen verwendet.


Syntax:

oUnoWert = CreateUnoValue( "[]byte", MeinBasicWert ) ' zum Abrufen einer Bytefolge.

Kann CreateUnoValue nicht in den angegebenen Uno-Typ konvertiert werden, so tritt ein Fehler auf. Für die Konvertierung kommt der Service TypeConverter zum Einsatz.

Diese Funktion ist für den Einsatz in Situationen gedacht, in denen der Standard-Konvertierungsmechanismus von Basic nach Uno nicht ausreicht. Dies kann beispielsweise der Fall sein, wenn Sie versuchen, aus LibreOffice Basic auf generische Any-basierte Schnittstellen wie beispielsweise XPropertySet::setPropertyValue( Name, Wert ) oder X???Container::insertBy???( ???, Wert ) zuzugreifen. Das Basic-Laufzeitsystem erkennt diese Typen nicht, da sie nur im entsprechenden Service definiert sind.

In dieser Situation wählt LibreOffice Basic den Typ, der dem zu konvertierenden Basic-Typ am ehesten entspricht. Wird jedoch der falsche Typ gewählt, so tritt ein Fehler auf. Hier sollten Sie die Funktion CreateUnoValue() verwenden, um einen Wert für den unbekannten Uno-Typ zu erstellen.

Sie können diese Funktion auch zum Übergeben von Werten mit anderen Typen als "Any" verwenden. Dies ist jedoch nicht empfehlenswert. Wenn Basic den Zieltyp bereits kennt, resultiert der Aufruf von CreateUnoValue() lediglich in zusätzlichen Konvertierungsvorgängen, die die Basic-Programmausführung verlangsamen.