(for Internet Explorer)
← ▼ ▲
↑
g_VBS_Lib
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)
参考
→ get_ModuleConsts : クラスの定数 (vbsool)
← ▼ ▲
CaseSensitive (g_VBS_Lib)
Dim g_VBS_Lib:CaseSensitive as integer
２つの英文字の文字列比較において、大文字・小文字を区別すること
CaseSensitive が指定できる引数に、CaseSensitive を指定しなかったときは、
大文字と小文字を同じ文字であるとして、文字列比較を行います。
参考
→ StrCompOption
サンプル：
Set c = g_VBS_Lib
If StrComp( "ABC", "abc", StrCompOption( c.CaseSensitive ) ) = 0 Then ...
If StrCompLastOf( "ABC", "BC", c.CaseSensitive ) = 0 Then ...
← ▼ ▲
WholeWord (g_VBS_Lib)
Dim g_VBS_Lib:WholeWord as integer
文字列の検索において、単語全体がマッチするものだけヒットさせます。
（単語単位検索、完全一致）
参考
→ InStrEx
← ▼ ▲
LastNextPos (g_VBS_Lib)
Dim g_VBS_Lib:LastNextPos as integer
検索した結果を、ヒットした位置の次の位置にします。
参考
→ InStrEx
ABCDE の中で C を検索したら、D の位置を検索した結果にします。
ABCDE の中で BCD を検索したら、E の位置を検索した結果にします。
← ▼ ▲
g_VBS_Lib_System
vbslib の System.vbs で定義される
g_VBS_Lib
。
← ▼ ▲
NotExistFileMD5 (g_VBS_Lib_System)
Dim g_VBS_Lib_System:NotExistFileMD5 as string
ファイルが存在しないことを明示的に示すときのハッシュ値。
値は、0が32桁の文字列です。
NotExistFileMD5 = "00000000000000000000000000000000"
→ System.vbs
ソース
← ▼ ▲
ArrayClass
Dim a : Set a = new ArrayClass
a.Add 1
echo a(0)
echo "count = " & a.Count
VBScript 標準の配列 （プロパティ）
.ToEmpty
要素をすべて削除する
.Add
要素を最後に追加する
.Push
要素を最後に追加する
.Pop
最後の要素を返し、配列から要素を削除する
.Count
要素数を返す
.Echo
サンプル
メンバー
すべての要素を表示する
Dim item
For Each item In a.Items
echo item
Next
基本的な使い方：
For 文で使う：
配列を扱いやすくするクラスです。
要素は、オブジェクトでもそれ以外でも格納できます。
配列番号以外でも要素にアクセスできます。
a が ArrayClass オブジェクト
.Copy
すべての要素をコピーする
.Value
配列のすべての要素を文字列にする
配列の要素。 配列番号。 （デフォルト・プロパティ）
.Item
関連
→ 配列、Array、ReDim Preserve (VBScript)
→ T_Arr.vbs # [T_ArrClass]
テスト
.Items
While 文で使う：
Dim a : Set a = new ArrayClass
Dim iter : Set iter = a.NewIterator()
While iter.HasNext()
echo iter.GetNext()
WEnd
a が ArrayClass オブジェクト
iter は、ArrayClassIterator オブジェクト
→ ArrayClassIterator クラス
→ ArraySpeed.vbs
性能比較
→ ItemFunc (ArrayClass)
Dim arr : Set arr = new ArrayClass : arr.AddElems Array( 1, 2, 3 )
関連
→ BinaryArray クラス
→ 配列要素を追加する速度
→ vbslib.vbs
ソース
← ▼ ▲
new_ArrayClass
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
[ 親: ArrayClass クラス ]
← ▼ ▲
Item、配列番号 (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 (ArrayClass)
関連
ItemFunc プロパティに関数を登録すると、引数 i に文字列などを指定できるようになります。
[ 親: ArrayClass クラス ]
(src)
i 引数が配列の要素数以上のときは、エラーになります。
← ▼ ▲
ItemFunc (ArrayClass)
Dim ArrayClass::ItemFunc as Function( Items as Array, Name as variant ) as variant
配列の要素を取得する関数。 Item プロパティにアクセスすると呼ばれる関数。
関連
→ Item (ArrayClass)
→ Item デフォルト・プロパティ : 動的定義メンバー (vbsool)
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]
テスト
→ NameOnlyClass
配列番号以外の数値型で要素を識別するとき
[ 親: ArrayClass クラス ]
← ▼ ▲
Items (ArrayClass)
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
[ 親: ArrayClass クラス ]
← ▼ ▲
m_Array (ArrayClass)
(src)
→ Items (ArrayClass)
Items と同じです。
廃止される予定です。
← ▼ ▲
ReDim_ (ArrayClass)
Sub ArrayClass::ReDim_( UBound as integer )
配列の要素数を変更します。 ReDim Preserve と同じです。
【引数】
UBound
新しい配列の最大要素番号
(src)
ReDim の末尾にアンダースコアが付いています。
（ReDim は予約語であるため。）
[ 親: ArrayClass クラス ]
← ▼ ▲
Add (ArrayClass)
Sub ArrayClass::Add( Elem as variant )
配列の最後に要素を追加します。
【引数】
Elem
配列に追加する要素（オブジェクト、またはそれ以外）
ArrayClass::Push と同じです。
(src)
Elem に配列を指定すると、ArrayClass の中の１つの要素の中に Elem 配列を追加します。
ArrayClass の中に複数の要素を追加するときは、AddElem を使ってください。
→ AddElems (ArrayClass)
関連
[ 親: ArrayClass クラス ]
← ▼ ▲
AddElems (ArrayClass)
Sub ArrayClass::AddElems( SrcArr as variant or array or ArrayClass )
配列のすべての要素を追加コピーします。
これまで入っていた要素の後に追加します。
サンプル：
Dim a
Set a = New ArrayClass
a.Add 1
a.AddElems Array( 2, 3 )
'// a は、{ 1, 2, 3 }
AddElems
→ AddArrElem
(src)
→ Add (ArrayClass)
関連
[ 親: ArrayClass クラス ]
← ▼ ▲
AddNewObject (ArrayClass)
Function ArrayClass::AddNewObject( ClassName as string, ObjectName as string ) as ClassName
指定した名前を付けたオブジェクトを生成して、配列の最後に追加します。
【引数】
ClassName
クラス名
ObjectName
オブジェクトの名前
返り値
Name プロパティが ObjectName のオブジェクト
サンプル：
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
すでに同じ名前のオブジェクトが配列にあっても、オブジェクトを生成します。
(src)
関連
→ Dic_addNewObject
テスト
→ [T_AddNewObj]
new_X
内部で
を使っているので、たとえば、ClassA に対して new_ClassA 関数の定義が必要です。
ClassName に指定したクラスに、Name プロパティ、またはメンバー変数が必要です。
[ 親: ArrayClass クラス ]
← ▼ ▲
AddCSV (ArrayClass)
Sub ArrayClass::AddCSV( CSV as string, Type_ as integer )
配列の最後に複数の要素を追加します。
(src)
【引数】
CSV
追加する要素を CSV（文字列）にしたもの
Type_
追加する要素の型、例：vbInteger, vbString
サンプル：
関連
→ CSV (ArrayClass)
Dim a : Set a = new ArrayClass
a.AddCSV "12, 34", vbInteger
[ 親: ArrayClass クラス ]
→ (CSV) ArrayFromCSV, ArrayFromCSV_Int
← ▼ ▲
Insert (ArrayClass)
Sub ArrayClass::Insert( in_BeforeIndex0 as integer, in_AddingElement as variant )
配列の途中に要素を追加します。
【引数】
in_BeforeIndex0
追加する位置の直前の配列番号、0以上
in_AddingElement
追加する要素
(src)
[ 親: ArrayClass クラス ]
← ▼ ▲
Push (ArrayClass)
Sub ArrayClass::Push( Elem as variant )
配列の最後に要素を追加します。
【引数】
Elem
配列に追加する要素（オブジェクト、またはそれ以外）
ArrayClass::Add と同じです。
(src)
[ 親: ArrayClass クラス ]
スタックのように要素を取り出すときは、
→ Pop (ArrayClass)
→ Remove (ArrayClass)
キューのように要素を取り出すときは、
← ▼ ▲
Pop (ArrayClass)
Function ArrayClass::Pop() as variant
配列の最後の要素を返し、その要素を配列から除外します。
【引数】
返り値
配列の最後の要素（オブジェクト、またはそれ以外）
(src)
[ 親: ArrayClass クラス ]
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
← ▼ ▲
Search (ArrayClass)
Function ArrayClass::Search( in_KeyItem as variant,
in_CompareFunction as Function, in_ParameterOfCompareFunction as variant,
in_StartIndexOrEmpty ) as integer or array of integer
比較関数て定義された条件を満たす要素を列挙します。
【引数】
in_KeyItem
in_CompareFunction の第2引数
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
← ▼ ▲
Remove (ArrayClass)
(src)
Sub ArrayClass::Remove( i as integer, n as string ) as variant
要素を配列から削除して、後の要素を詰めます。
【引数】
i
n
配列の要素の番号。 先頭は 0
削除する要素の数
[ 親: ArrayClass クラス ]
サンプル
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
テスト
← ▼ ▲
RemoveObject (ArrayClass)
Function ArrayClass::RemoveObject( a_Object as object ) as object
指定したオブジェクトを指している配列の要素１つを、配列から除外します。
【引数】
a_Object
配列から除外するオブジェクト
返り値
除外したとき = a_Object、 無かったとき = Nothing オブジェクト
配列要素がすべてオブジェクトでないとエラーになります。
除外した配列番号には、＋１の配列番号だったオブジェクトが入り、詰められます。
実行前： objs.UBound_=3, objs(0)= a, (1)= b, (2)= c, (3)= d ならば
実行後： objs.UBound_=2, objs(0)= a, (1)= c, (2)= d
objs.RemoveObject b
サンプル：
(src)
テスト
[ 親: ArrayClass クラス ]
→ T_Arr.vbs
T_AddNewObj
← ▼ ▲
RemoveEmpty (ArrayClass)
(src)
[ 親: ArrayClass クラス ]
Sub ArrayClass::RemoveEmpty()
Empty になっている配列の要素を詰めます。
サンプル
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
← ▼ ▲
RemoveByIndexes (ArrayClass)
Sub ArrayClass::RemoveByIndexes( in_Indexes as array of integer )
指定した配列番号の要素を配列から除外します。
【引数】
in_Indexes
除外する要素の配列番号の配列
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
← ▼ ▲
ToEmpty (ArrayClass)
Sub ArrayClass::ToEmpty()
配列を空にします。 配列要素数は 0 になります。
(src)
[ 親: ArrayClass クラス ]
← ▼ ▲
LookUpDic (ArrayClass)
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)
[ 親: ArrayClass クラス ]
関連
→ SearchInSimpleArray
← ▼ ▲
NewIterator (ArrayClass)
Dim ArrayClass::NewIterator as ArrayClassIterator
ArrayClassIterator
オブジェクトを生成します。
(src)
初めて ArrayClassIterator::GetNext を呼んだときは、先頭の要素を返します。
[ 親: ArrayClass クラス ]
← ▼ ▲
Count (ArrayClass)
Property Get ArrayClass::Count() as integer
配列の要素数を返します。
(src)
Count = 2 なら、LBound( Items ) = 0, UBound( Items ) = 1 です。
Visual Basic 系言語では、要素数のシンボルは Count です。
Java 系言語では、要素数のシンボルは Length です。
[ 親: ArrayClass クラス ]
← ▼ ▲
Length (ArrayClass)
Property Get ArrayClass::Length() as integer
配列の要素数を返します。
(src)
Length = 2 なら、LBound( Items ) = 0, UBound( Items ) = 1 です。
Visual Basic 系言語では、要素数のシンボルは Count です。
Java 系言語では、要素数のシンボルは Length です。
[ 親: ArrayClass クラス ]
← ▼ ▲
UBound_ (ArrayClass)
Property Get ArrayClass::UBound_() as integer
配列の最大要素番号を返します。
(src)
UBound の末尾にアンダースコアが付いています。
（UBound をオーバーライドすると、ArrayClass が実装できなくなるため。）
For i=0 To Arr.UBound_
Next
サンプル：
[ 親: ArrayClass クラス ]
←
↓