Module
Enhavo
Indekso 🔎︎

# CreateUnoValue Function

Liveras objekton kiu reprezentas strikte tipizeman valoron kiu referas al la Uno-tipa sistemo.

Pasate al Uno, ĉi tiu objekto aŭtomate konvertiĝas al 'Any' de la koresponda tipo. Necesas specifi la tipon per ĝia tute specifita Uno-tipa nomo.

La API de LibreOffice ofte uzas la tipon Any. Ĝi estas la kontraŭparto de la tipo Variant, konata en aliaj medioj. La tipo Any enhavas unu arbitran tipon Uno kaj uzatas en generaj interfacoj Uno.

## Sintakso:

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

Se ne eblas konverti je CreateUnoValue al la specifita Uno-tipo, kaj eraro okazas. Por la konverto, la servo TypeConverter estas uzebla.

Ĉi tiu funkcio celas al uzado en situacioj kie la apriora Basic al Uno tipkonverta mekanismo ne sufiĉas. Tio povas okazi kiam oni provas aliri ĝeneralajn Any-bazitajn interfacojn, kiel XPropertySet::setPropertyValue( Name, Value ) aŭ X???Container::insertBy???( ???, Value ), el LibreOffice Basic. La rultempa Basic ne rekonas tiujn tipojn ĉar ili estas difinitaj en la koresponda servo.

En tia situacio, LibreOffice Basic elektas la plej kongruan tipon por la Basic-tipo konvertota. Tamen, se malĝusta tipo elektiĝas, eraro okazos. Tial uzu la funkcion CreateUnoValue() por krei valoron por la nekonata Uno-tipo.

Oni povas ankaŭ uzi ĉi tiun funkcion por pasi ne-Any valorojn, sed tio ne estas rekomendinda. Se Basic jam scias la celan tipon, uzi la funkcion CreateUnoValue() nur kaŭzas pluajn konvertojn kiuj malrapidigos la ruladon de Basic.