Module
Contents
Index 🔎︎

# CreateUnoValue Function

Uno タイプを明示的に指定された値を示すオブジェクトを返します。

このオブジェクトは Uno に渡す際に、自動的に該当する Any タイプに変換されます。これらのタイプ指定は、完全な Uno タイプ名を指定する必要があります。

LibreOffice API では Any タイプがよく使われます。これは、他の環境で使われる Variant タイプと対をなすものです。Any タイプは一般の Uno インタフェースで利用されているもので、任意の Uno タイプを 1 つ格納できます。

## 構文:

    oUnoValue = CreateUnoValue( "[]byte", MyBasicValue ) ' to get a byte sequence.

指定した Uno タイプへの CreateUnoValue による変換ができない場合は、エラーが発生します。変換には TypeConverter サービスを使用します。

この関数が用意されているのは、デフォルトで使用される Basic から Uno タイプへの変換では処理しきれない場合があり、そうした状況に対処するためです。こうした状況が発生しうるのは、XPropertySet::setPropertyValue( Name, Value ) や X???Container::insertBy???( ???, Value ) のような Any を使用した一般のインタフェースに LibreOffice Basic から アクセスしようとした場合です。これらのタイプは、対応するサービス内でのみ定義されているため、Basic ランタイムは認識することができません。

このような状況では、LibreOffice Basic が、変換する Basic タイプにもっとも合ったタイプを選択します。 ただし、間違ったタイプが選択されると、エラーが発生します。 不明な Uno タイプの値を作成するには、CreateUnoValue() 関数を使用します。

またこの関数を使って Any タイプ以外の値を渡すこともできますが、推奨される使用法ではありません。ターゲットとするタイプが Basic 側で既知である場合に CreateUnoValue() 関数を使用しても、不必要な変換処理が追加されるだけで、Basic の実行速度が低下します。