Inhalte

# Funktion CreateUnoValue

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

Dieses Objekt wird bei der Übergabe an Uno automatisch in ein Any des entsprechenden Typs konvertiert. Der Typ muss durch seinen vollständig qualifizierten Uno-Typnamen angegeben werden.

Die LibreOffice-API verwendet häufig den Typ Any. Es ist das Gegenstück zum aus anderen Umgebungen bekannten Typ Variant. Der Typ Any enthält einen beliebigen Uno-Typ und wird in generischen Uno-Schnittstellen verwendet.

### Syntax:

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

### Rückgabewert:

Objekt

### Parameter:

Type: Der vollständig qualifizierte Uno-Typname. Unterstützte Datentypen sind void, char, boolean, byte, short, unsigned short, long, unsigned long, hyper, unsigned hyper, float, double, string, type und any. Bei Namen muss die Groß-/Kleinschreibung beachtet werden und ihnen können eckige Klammern vorangestellt werden, um eine Matrix anzugeben.

Value: Ein streng typisierter Wert.

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

### Fehlercodes:

Wenn CreateUnoValue den Wert nicht in den angegebenen Uno-Typ konvertieren kann, tritt ein Fehler auf. Für die Konvertierung ist der Dienst com.sun.star.script.Converter zuständig.

### Beispiel:

Diese Funktion ist für den Einsatz in Situationen gedacht, in denen der Standardmechanismus zur Konvertierung des Typs „Basic“ in „Uno“ nicht ausreicht. Dies geschieht durch Aufrufen generischer Any-basierter API-Methoden, wie beispielsweise com.sun.star.beans.XPropertySet.setPropertyValue() oder com.sun.star .container.XNameContainer.insertByName(). CreateUnoValue() legt ein Wertobjekt für den unbekannten Uno-Typ fest.

In diesem Beispiel wird die Methode com.sun.star.beans.XPropertySet.addProperty() zum Erstellen einer Dokumenteigenschaft verwendet, deren Standardwerte die Verwendung von CreateUnoValue() erfordern:

      With ThisComponent.DocumentProperties.getUserDefinedProperties()
          .addProperty("FOO", com.sun.star.beans.PropertyAttribute.REMOVEABLE, CreateUnoValue("double", 23))
      End With

Sie können diese Funktion auch verwenden, um Werte nicht vom Typ Any zu übergeben, dies wird jedoch nicht empfohlen. Wenn Basic den Zieltyp bereits kennt, führt die Verwendung der Funktion CreateUnoValue() nur zu zusätzlichen Konvertierungsvorgängen, welche die Ausführung von Basic verlangsamen.