XSIUtils.GetVariantType

導入

v5.0

詳細

Win32バリアント型のLongで表現される指定値の正確なバリアントデータ型を戻します(そのほとんどは Softimage siVariantTypeに含まれます)。このメソッドは、特定の変数または値の内部表現に関する説明な情報が必要な、高度なスクリプトの作成者が使用します。

通常のスクリプトでは変数の正確さは重要ではありません。例えば、文字列「14」は整数の 14 またはダブルの 14.0 とほぼ同様の方法で使用されることがあります。実際、JScript はすべての数字の種類を包括的用語「数」にまとめ、一括して取り扱います。

Softimage Object Model を含むすべてのリファレンスは siDispatch を戻します。特定のタイプのオブジェクトについては、Application.ClassNameSIObject.IsClassOf、またはSIObject.Typeを参照してください。

内部的にはすべての変数がVariant構造で表現されます。このメソッドは、この構造の「vt」メンバの値を戻します。詳細については、win32 の Variant構造に関するドキュメントを参照してください。

スクリプト 構文

oReturn = XSIUtils.GetVariantType( Value );

戻り値

Long型のsiVariantTypeの値のいずれか。

パラメータ

パラメータ タイプ 詳細
Variant テストが必要なスクリプティング変数

JScript の例

/*
        This example demonstrates the difference between XSIUtils.GetVariantType
        and the JScript typeof() function.
*/
//INFO : typeof: number VariantType: siInt4
TestJScriptVariable( 49 ) ;
//INFO : typeof: number VariantType: siDouble
TestJScriptVariable( 49.1 ) ;
//INFO : typeof: boolean VariantType: siBool
TestJScriptVariable( true ) ;
//INFO : typeof: string VariantType: siString
TestJScriptVariable( "hello" ) ;
//INFO : typeof: undefined VariantType: siEmpty
TestJScriptVariable( undefined ) ;
//INFO : typeof: object VariantType: VT_NULL
TestJScriptVariable( null ) ;
// All Softimage objects show up as siDispatch
//INFO : typeof: object VariantType: siDispatch
TestJScriptVariable( ActiveSceneRoot ) ;
// So do these standard Automation objects
//INFO : typeof: object VariantType: siDispatch
TestJScriptVariable( new ActiveXObject( "Scripting.FileSystemObject" )) ;
// A JScript array also shows up as siDispatch
//INFO : typeof: object VariantType: siDispatch
TestJScriptVariable( new Array( "1","2","3" )) ;
// A VBScript error shows up differently than a JScript Array
//INFO : typeof: unknown VariantType: VBScript Array (Safearray)
TestJScriptVariable( Application.Workgroups )
// Even code shows up as an object in JScript
//INFO : typeof: function VariantType: siDispatch
TestJScriptVariable( TestJScriptVariable ) ;
function TestJScriptVariable( in_val )
{
        Application.LogMessage( "typeof: " + typeof(in_val) + " VariantType: " 
                + siVariantTypeToStr( XSIUtils.GetVariantType(in_val) ) );      
}
function siVariantTypeToStr( in_vt )
{
        //Demonstrate just the most common
        switch ( in_vt ) {
                case siEmpty : 
                        return "siEmpty";
                case 1 :
                        // 1 == VT_NULL, used by jscript "null"
                        return "VT_NULL";
                case siInt2 :
                        return "siInt2";
                case siInt4 :
                        return "siInt4";
                case siFloat :
                        return "siFloat";
                case siDouble :
                        return "siDouble";
                case siString :
                        return "siString";
                case siBool :
                        return "siBool";
                case siDispatch :
                        return "siDispatch";
                case siUnknown :
                        return "siUnknown";
                case siByte :
                        return "siByte";
                case siUByte :
                        return "siUByte";
                case siUInt2 :
                        return "siUInt2";
                case siUInt4 :
                        return "siUInt4";
                case siUByte :
                        return "siUByte";
                case 8204 :
                        // An array of Variants
                        // 8204 == VT_ARRAY | VT_VARIANT
                        return "VBScript Array (Safearray)"
                default :
                        return in_vt.toString() ;       
        }
}

関連項目

Application.ClassName SIObject.Type