v5.0
Win32 バリアント型の Long で表現される指定値の正確なバリアントデータ型を戻します(そのほとんどは Softimage siVariantType に含まれます)。このメソッドは、特定の変数または値の内部表現に関する説明な情報が必要な、高度なスクリプトの作成者が使用します。
通常のスクリプトでは変数の正確さは重要ではありません。例えば、文字列「14」は整数の 14 またはダブルの 14.0 とほぼ同様の方法で使用されることがあります。実際、JScript はすべての数字の種類を包括的用語「数」にまとめ、一括して取り扱います。
Softimage Object Model を含むすべてのリファレンスは siDispatch を戻します。特定のタイプのオブジェクトについては、Application.ClassName、SIObject.IsClassOf、または SIObject.Type を参照してください。
内部的にはすべての変数が Variant 構造で表現されます。このメソッドは、この構造の「vt」メンバの値を戻します。詳細については、win32 の Variant構造に関するドキュメントを参照してください。
Int32 XSIUtils.GetVariantType( Object in_value ); |
oReturn = XSIUtils.GetVariantType( Value ); |
Long 型の siVariantType の値のいずれか。
パラメータ | タイプ | 説明 |
---|---|---|
Value | Variant | テストが必要なスクリプティング変数 |
/* 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() ; } } |