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構造に関するドキュメントを参照してください。

C#構文

Int32 XSIUtils.GetVariantType( Object in_value );

スクリプト構文

oReturn = XSIUtils.GetVariantType( Value );

戻り値

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

パラメータ

パラメータ タイプ 説明
Value 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