←
▼
▲
vbslib で定義されている定数と一部の変数は、g_VBS_Lib オブジェクトのプロパティになっています。
これは、なるべくグローバル・スコープにおいてシンボルが重複しないようにするためです。
次のように、ローカル変数 c を使ってアクセスすることができます。
Sub FuncA()
Set c = g_VBS_Lib
If StrCompLastOf( "ABC", "BC", c.CaseSensitive ) = 0 Then ...
End Sub
g_VBS_Lib
CaseSensitive
定数の内容については、左のツリーからサブ・ツリーを参照してください。
(src)
参考
←
▼
▲
Dim g_VBS_Lib:CaseSensitive as integer
2つの英文字の文字列比較において、大文字・小文字を区別すること
CaseSensitive が指定できる引数に、CaseSensitive を指定しなかったときは、
大文字と小文字を同じ文字であるとして、文字列比較を行います。
参考
サンプル:
Set c = g_VBS_Lib
If StrComp( "ABC", "abc", StrCompOption( c.CaseSensitive ) ) = 0 Then ...
If StrCompLastOf( "ABC", "BC", c.CaseSensitive ) = 0 Then ...
←
▼
▲
Dim g_VBS_Lib:WholeWord as integer
文字列の検索において、単語全体がマッチするものだけヒットさせます。
(単語単位検索、完全一致)
参考
←
▼
▲
Dim g_VBS_Lib:LastNextPos as integer
検索した結果を、ヒットした位置の次の位置にします。
参考
ABCDE の中で C を検索したら、D の位置を検索した結果にします。
ABCDE の中で BCD を検索したら、E の位置を検索した結果にします。
←
▼
▲
vbslib の System.vbs で定義される
。
←
▼
▲
Dim g_VBS_Lib_System:NotExistFileMD5 as string
ファイルが存在しないことを明示的に示すときのハッシュ値。
値は、0が32桁の文字列です。
NotExistFileMD5 = "00000000000000000000000000000000"
→ System.vbs
ソース
関連
←
▼
▲
Dim a : Set a = new ArrayClass
a.Add 1
echo a(0)
echo "count = " & a.Count
VBScript 標準の配列 (プロパティ)
要素をすべて削除する
要素を最後に追加する
要素を最後に追加する
最後の要素を返し、配列から要素を削除する
要素数を返す
サンプル
メンバー
すべての要素を表示する
Dim item
For Each item In a.Items
echo item
Next
基本的な使い方:
For 文で使う:
配列を扱いやすくするクラスです。
要素は、オブジェクトでもそれ以外でも格納できます。
配列番号以外でも要素にアクセスできます。
a が ArrayClass オブジェクト
.Copy
すべての要素をコピーする
配列のすべての要素を文字列にする
配列の要素。 配列番号。 (デフォルト・プロパティ)
関連
→ T_Arr.vbs # [T_ArrClass]
テスト
While 文で使う:
Dim a : Set a = new ArrayClass
Dim iter : Set iter = a.NewIterator()
While iter.HasNext()
echo iter.GetNext()
WEnd
a が ArrayClass オブジェクト
iter は、ArrayClassIterator オブジェクト
→ ArraySpeed.vbs
性能比較
Dim arr : Set arr = new ArrayClass : arr.AddElems Array( 1, 2, 3 )
関連
→ vbslib.vbs
ソース
←
▼
▲
Function new_ArrayClass( InitialValues as array of variant ) as ArrayClass
配列から ArrayClass のオブジェクトを生成します。
【引数】
InitialValues
ArrayClass のオブジェクトの初期値の配列
返り値
ArrayClass のオブジェクト
ファイル:
vbslib.vbs
(src)
サンプル
Assert new_ArrayClass( Array( 1, 2, 3 ) ).CSV = "1,2,3"
サンプル
Set arr = new_ArrayClass( Array( 1, 2, 3 ) )
Assert arr(0) = 1
Assert arr(1) = 2
Assert arr(2) = 3
new_ArrayClass
←
▼
▲
Default Property ArrayClass::Item( i as integer )
配列番号を使って、配列の要素を参照します。 (デフォルト・プロパティ)
【引数】
i
配列の要素の番号。 先頭は 0
Dim a : Set a = new ArrayClass
a.Add 1
echo a(0) '// a.Item(0) と同じ
サンプル:
a(0)
オブジェクトを Set するときは、次のように記述してください。
Set a(0) = new ClassA
関連
ItemFunc プロパティに関数を登録すると、引数 i に文字列などを指定できるようになります。
(src)
i 引数が配列の要素数以上のときは、エラーになります。
←
▼
▲
Dim ArrayClass::ItemFunc as Function( Items as Array, Name as variant ) as variant
配列の要素を取得する関数。 Item プロパティにアクセスすると呼ばれる関数。
関連
Dim arr : Set arr = new ArrayClass
Set arr.ItemFunc = GetRef( "ClassA_getItem" )
Set obj = arr( "Name" )
Function ClassA_getItem( Items, Name )
Dim s
If IsNumeric( Name ) Then
Set ClassA_getItem = Items( Name )
Else
For Each s In Items
If s.Name = Name Then Set ClassA_getItem = s : Exit Function
Next
End If
End Function
サンプル:
Item デフォルト・プロパティにアクセスするときに、要素を決定する方法をカスタマイズできます。
→ T_Arr_Target # [T_ArrayCustom]
テスト
配列番号以外の数値型で要素を識別するとき
←
▼
▲
Dim ArrayClass::Items as array of variant
ArrayClass クラスがラップしている配列です。
要素は、オブジェクトでもそれ以外でも格納できます。
(src)
Dim arr : Set arr = new ArrayClass
Dim item
For Each item In arr.Items
echo item
Next
For 文で使う:
ソート関数に渡すときは、Items ではなく、ArrayClass オブジェクトを渡してください。
Dim arr : Set arr = new ArrayClass
:
ShakerSort
ShakerSort arr, 1, arr.UBound_, GetRef("CmpFunc1"), Empty
arr
arr
Items
←
▼
▲
(src)
Items と同じです。
廃止される予定です。
←
▼
▲
Sub ArrayClass::ReDim_( UBound as integer )
配列の要素数を変更します。 ReDim Preserve と同じです。
【引数】
UBound
新しい配列の最大要素番号
(src)
ReDim の末尾にアンダースコアが付いています。
(ReDim は予約語であるため。)
←
▼
▲
Sub ArrayClass::Add( Elem as variant )
配列の最後に要素を追加します。
【引数】
Elem
配列に追加する要素(オブジェクト、またはそれ以外)
ArrayClass::Push と同じです。
Elem に配列を指定すると、ArrayClass の中の1つの要素の中に Elem 配列を追加します。
ArrayClass の中に複数の要素を追加するときは、AddElem を使ってください。
→ AddElems (ArrayClass)
関連
←
▼
▲
Dim a
Set a = New ArrayClass
a.Add 1
a.AddElems Array( 2, 3 )
'// a は、{ 1, 2, 3 }
AddElems
(src)
関連
←
▼
▲
Set objects = new ArrayClass
Set o = objects.AddNewObject( "ClassA", "ObjectA" )
Class ClassA
Public Name
End Class
Function new_ClassA()
Set new_ClassA = new ClassA
End Function
すでに同じ名前のオブジェクトが配列にあっても、オブジェクトを生成します。
関連
テスト
→ [T_AddNewObj]
内部で
を使っているので、たとえば、ClassA に対して new_ClassA 関数の定義が必要です。
ClassName に指定したクラスに、Name プロパティ、またはメンバー変数が必要です。
←
▼
▲
Dim a : Set a = new ArrayClass
a.AddCSV "12, 34", vbInteger
←
▼
▲
←
▼
▲
スタックのように要素を取り出すときは、
キューのように要素を取り出すときは、
←
▼
▲
Set i_stack = new ArrayClass
For i=0 To modules.UBound_
If modules(i) = "delete" Then
i_stack.Push i
End If
Next
Do
If i_stack.Count = 0 Then Exit Do
modules.Remove i_stack.Pop(), 1
Loop
サンプル
削除する配列番号をスタックにプッシュして、ポップしながら modules 配列の要素を削除する
Pop
←
▼
▲
Function ArrayClass::Search( in_KeyItem as variant,
in_CompareFunction as Function, in_ParameterOfCompareFunction as variant,
in_StartIndexOrEmpty ) as integer or array of integer
in_CompareFunction
in_ParameterOfCompareFunction
in_CompareFunction の第3引数
in_StartIndexOrEmpty
比較を開始する要素番号 0以上、または Empty
→ vbslib.vbs
ソース
返り値
配列番号、または、配列番号の配列
in_StartIndexOrEmpty 引数が数値なら、返り値は配列番号です。 見つからなかったら、Empty
を返します。
in_StartIndexOrEmpty 引数が Empty なら、返り値は配列番号の配列です。 見つからなかったら
要素数 0 の配列を返します。
→ T_Arr.vbs
テスト
T_ArrayClass_Search
←
▼
▲
Set arr = new_ArrayClass( Array( 0, 1, 2, 3, 4, 5 ) )
arr.Remove 1, 2
Assert IsSameArray( arr.Items, Array( 0, 3, 4, 5 ) )
Remove
→ T_Arr.vbs # T_ArrClass_Remove
テスト
←
▼
▲
objs.RemoveObject b
サンプル:
テスト
→ T_Arr.vbs
T_AddNewObj
←
▼
▲
Set arr = new_ArrayClass( Array( 0, Empty, 2, Empty, Empty, 5 ) )
arr.RemoveEmpty
Assert IsSameArray( arr.Items, Array( 0, 2, 5 ) )
テスト
→ T_Arr.vbs # T_ArrClass_RemoveEmpty
←
▼
▲
Set an_array = new_ArrayClass( Array( "A", "B". "C", "D" ) )
an_array.RemoveByIndexes Array( 1, 3 )
Aseert IsSameArray( an_array, Array( "A", "C" ) ) )
サンプル
→ vbslib.vbs
ソース
→ T_Arr.vbs
テスト
T_ArrayClass_RemoveByIndexes
←
▼
▲
Sub ArrayClass::ToEmpty()
配列を空にします。 配列要素数は 0 になります。
(src)
←
▼
▲
Function ArrayClass::LookUpDic( Key as string, Value as variant ) as Dictionary
配列の要素の中から、指定した値を持つ辞書を返します。
サンプル
Set dic1 = CreateObject( "Scripting.Dictionary" )
dic1.Item( "name" ) = "Item1"
Set dic2 = CreateObject( "Scripting.Dictionary" )
dic2.Item( "name" ) = "Item2"
Set arr = new_ArrayClass( Array( dic1, dic2 ) )
Assert arr.LookUpDic( "name", "Item1" ) Is dic1
"name", "Item1"
配列の要素が辞書のときに使えます。
該当する要素が無かったときは、Nothing を返します。
→ T_Dic.vbs # T_LookUpDicInArray
テスト
(src)
関連
←
▼
▲
Dim ArrayClass::NewIterator as ArrayClassIterator
オブジェクトを生成します。
(src)
初めて ArrayClassIterator::GetNext を呼んだときは、先頭の要素を返します。
←
▼
▲
←
▼
▲
←
▼
▲
For i=0 To Arr.UBound_
Next
サンプル: