(for Internet Explorer)
← ▼ ▲
↑
DicToArr
Sub DicToArr( Dic as Dictionary, out_Arr as array of DicElem )
Dictionary を配列に変換します。 配列の要素は DicElem 型になります。
【引数】
Dic
out_Arr
Dictionary
（出力） DicElem 型の配列。
Dic の内容を Arr に変換すると、デバッガで内容を見ることができます。
（Visual Studio 2005）
(src)
Class DicElem
Public Key
Public Item
Public Property Get/Let Name '// Key と同じ
Public Sub Init( a_Key, a_Item )
End Class
DicElem クラス
サンプル：
DicToArr dic, arr '//[out] arr
関連
→ ShakerSort_fromDicKey
(src)
→ DicKeyToArr
→ DicItemToArr
→ Dic_addFromArray
← ▼ ▲
DicElemArrayKeyToArr
Sub DicElemArrayKeyToArr( a_DicElemArray as array of DicElem, out_Array as array of variant )
の配列から、DicElem::Key の配列を抽出します。
ソース
→ vbslib.vbs
DicElem クラス
← ▼ ▲
IsSameDictionary
Function IsSameDictionary( DicA as dictionary, DicB as dictionary, Option_ as integer )
as boolean
辞書のすべての要素が等しいかどうかを判定します。
各要素は = で判定します。
Option_ 引数
c は g_VBS_Lib の返り値です。
c.CompareOnlyExistB
DicB に存在する要素のみ比較します
c.StopIsNotSame
デバッグ用。 異なる要素が見つかったら、本関数の
中から Stop 命令を呼び出す
ソース
→ T_Dic.vbs
テスト
→ vbslib.vbs
T_IsSameDictionary
【引数】
DicA
DicB
DicB と比較する辞書
DicA と比較する辞書
Option_
オプション（下記）
辞書のすべての要素が等しいかどうか
返り値
← ▼ ▲
Dic_add
Sub Dic_add( in_out_Dic as Dictionary, PlusDic as Dictionary )
辞書を加算します。
【引数】
in_out_Dic
PlusDic
（入出力） 加算される辞書
加算する内容が入っている辞書
PlusDic にあるキーがすでに in_out_Dic にあるときは、上書きします。
PlusDic のアイテムが Empty のキーは、in_out_Dic から削除されます。
そのキーが in_out_Dic にないときは、何もしませんし、エラーにもなりません。
値が Empty の変数を in_out_Dic に指定すると、内部で辞書を生成します。
→ T_Dic.vbs # T_DicAdd
テスト
関連
→ Dic_sub
→ Dic_addElem
Set dic = Dict(Array( "Key1","Item1", "Key2","Item2" ))
Dic_add dic, Dict(Array( "Key2","ITEMS", "Key3","Item3" )) '//[out] dic
Assert dic.Count = 3
Assert dic.Item( "Key1" ) = "Item1"
Assert dic.Item( "Key2" ) = "ITEMS"
Assert dic.Item( "Key3" ) = "Item3"
サンプル
ソース
→ vbslib.vbs
→ ２つの辞書を加算する (LazyDictionaryClass)
← ▼ ▲
Dic_sub
Sub Dic_sub( out_Dic as Dictionary, WholeDic as Dictionary, BaseDic as Dictionary,
CompareFunc as function, CompareFuncParam as variant )
辞書を減算します。
【引数】
out_Dic
WholeDic
（出力） WholeDic から BaseDic を減算した結果の辞書
BaseDic に out_Dic を加算した結果と同一の内容が入った辞書
(src)
WholeDic - BaseDic = out_Dic の演算をします。
BaseDic に out_Dic を加算（Dic_add）した結果が、WholeDic になるような out_Dic を取得します。
out_Dic に、値が Empty の変数を指定すると、Dic_sub の内部で生成した辞書が取得できます。
同じキーのアイテムを CompareFunc した結果、等価でなければ、out_Dic にコピーされます。
辞書のアイテムがオブジェクトのときは、WholeDic のアイテムと同一のオブジェクトを指します。
BaseDic にあって WholeDic にないキーは、out_Dic にもできますが、アイテムは Empty と
なります。
out_Dic に Empty が入った変数を指定したら、内部で新しく辞書を生成します。
out_Dic に 辞書が入った変数を指定したときは、その辞書を空にしてから、その辞書に出力します。
BaseDic
Dic_add で加算する前と同一の内容が入った辞書
Dic_sub dic, _
Dict(Array( "Key1","Item1", "Key2","ITEMS", "Key3","Item3" )), _
Dict(Array( "Key1","Item1", "Key2","Item2", "Key4","Item4" )), _
Empty, Empty
'//[out] dic
'// dic = Dict(Array( "Key2","ITEMS", "Key3","Item3", "Key4",Empty ))
サンプル：
CompareFunc
CompareFuncParam
比較関数
通常 Empty、CompareFunc の第3引数
、Empty =
StdCompare
通常 Empty、
→ T_Dic.vbs # T_DicAdd
テスト
サンプル：
Dic_sub dic, whole_dic, base_dic, Empty, Empty '//[out] dic
← ▼ ▲
Dic_addInArrayItem
→ vbslib.vbs
ソース
→ T_Dic.vbs
テスト
T_DicArrayItem
関連
→ Dic_removeInArrayItem
Sub Dic_addInArrayItem( ref_Dictionary as dictionary of ArrayClass, _
in_Key as string, in_Item as variant )
配列をアイテムに持つ辞書に、配列の要素を追加します。
【引数】
ref_Dictionary
in_Key
配列をアイテムに持つ辞書
辞書のキー
in_Item
配列に追加するアイテム （オブジェクト または 非オブジェクト）
ref_Dictionary
Key, Item
ArrayClass
*
in_Item
*
データ構造
登録されていない辞書のキーを指定したときは、内部で ArrayClass のオブジェクトを新規作成して、
辞書のアイテムにします。
すでに登録されている辞書のキーを指定したときは、そのキーのアイテムである配列の末尾に
追加します。
内部の動作
Dic_addInArrayItem dic, "key", item
サンプル
要素でループする
For Each key In files.Keys
For Each item In files( key ).Items
:
Next
Next
同じ要素を重複して追加する可能性があるので注意してください。
→ Dic_addExInArrayItem
→ ArrayDictionary クラス
← ▼ ▲
Dic_addExInArrayItem
Sub Dic_addExInArrayItem( ref_Dictionary as dictionary of ArrayClass, _
in_Key as string, in_Item as variant, _
in_CompareFunction as CompareFunction, in_ParameterOfCompareFunction as variant, _
in_Option as integer )
配列をアイテムに持つ辞書に、重複しないように、配列の要素を追加します。
【引数】
ref_Dictionary
in_Key
配列をアイテムに持つ辞書
辞書のキー
in_Item
配列に追加するアイテム、in_CompareFunction の第2引数
→ vbslib.vbs
ソース
→ T_Dic.vbs
テスト
T_DicArrayItem
in_CompareFunction
in_ParameterOfCompareFunction
比較関数
in_CompareFunction の第3引数
in_Option
c.ReplaceIfExist または c.IgnoreIfExist またはc.AddAlways
in_Option 引数の c は、g_VBS_Lib です。
c.ReplaceIfExist
c.IgnoreIfExist
比較関数が 0 を返す要素がすでにあるときは、置き換えます。
比較関数が 0 を返す要素がすでにあるときは、追加しません。
c.AddAlways
比較関数の結果に関わらず、追加します。
← ▼ ▲
Dic_removeInArrayItem
→ vbslib.vbs
ソース
→ T_Dic.vbs
テスト
T_DicArrayItem
Dic_removeInArrayItem dic, "KeyA", "ItemA", GetRef( "StdCompare" ), Empty, True, False
Sub Dic_removeInArrayItem( arg_Dictionary as dictionary of ArrayClass, _
in_Key as string, in_Item as variant, _
in_CompareFunction as CompareFunction, in_ParameterOfCompareFunction as variant, _
in_IsErrorIfNotFound as boolean, in_IsMultiRemove as boolean )
配列をアイテムに持つ辞書から、配列の要素を除外します。
【引数】
arg_Dictionary
in_Key
配列をアイテムに持つ辞書
辞書のキー
in_Item
比較対象のアイテム、in_CompareFunction の第2引数
関連
サンプル
→ Dic_addInArrayItem
in_CompareFunction
in_ParameterOfCompareFunction
in_IsErrorIfNotFound
in_IsMultiRemove
比較関数
in_CompareFunction の第3引数
１つも一致しなかったらエラーにするかどうか
複数の要素が一致したら、そのすべて除外するかどうか
in_IsErrorIfNotFound に True を指定すると、登録されていない辞書のキーを指定したときや、
比較対象のアイテムと一致する配列要素が１つのなかったときに、E_NotFoundSymbol エラー
になります。
参考
Dic_addInArrayItem
のデータ構造
辞書の中にある、指定されたキーに対応するアイテムを探し、
そのアイテムである配列の中のすべての要素に対して比較関数をコールバックし、
比較関数が 0を返したら、比較関数に渡した要素を配列から除外します。
配列の要素がすべて除外されたら、該当する辞書のキーやアイテムも除外します。
← ▼ ▲
Dic_searchInArrayItem
Function Dic_searchInArrayItem( ref_Dictionary as dictionary of ArrayClass, _
in_Key as string, in_Item as variant, _
in_CompareFunction as CompareFunction, in_ParameterOfCompareFunction as variant )
as array of integer
配列をアイテムに持つ辞書から、条件に合う配列番号を列挙します。
【引数】
ref_Dictionary
in_Key
配列をアイテムに持つ辞書
辞書のキー
in_Item
比較対象のアイテム、in_CompareFunction の第2引数
in_CompareFunction
in_ParameterOfCompareFunction
返り値
比較関数
in_CompareFunction の第3引数
配列番号の配列
indexes = Dic_searchInArrayItem( dic, "KeyA", "ItemA", GetRef( "StdCompare" ), Empty )
サンプル
→ vbslib.vbs
ソース
→ T_Dic.vbs
テスト
T_DicArrayItem
← ▼ ▲
Dic_getCountInArrayItem
Function Dic_getCountInArrayItem( ref_Dictionary as dictionary of ArrayClass ) as integer
配列をアイテムに持つ辞書に入っているすべての要素の数を返します。
【引数】
ref_Dictionary
返り値
配列をアイテムに持つ辞書
要素の数
→ vbslib.vbs
ソース
→ T_Dic.vbs
テスト
T_DicArrayItem
← ▼ ▲
GetDicItemAsArrayClass
Function GetDicItemAsArrayClass( Dic as dictionary, Key as string ) as ArrayClass
辞書のアイテムにある ArrayClass で参照します。 アイテムがなければ ArrayClass を作成します。
【引数】
Desc
Key
辞書
辞書のキー
返り値
辞書の要素である ArrayClass のオブジェクト
Dim dic, arr
Set dic = CreateObject( "Scripting.Dictionary" )
Set arr = GetDicItemAsArrayClass( dic, "key1" )
テスト
→ T_Dic.vbs # T_GetDicItem
サンプル
dic, "key1"
ソース
→ vbslib.vbs
指定したキーに対応するアイテムがないときは、新規作成した ArrayClass のオブジェクトを、
キーに対応するアイテムに追加します。
← ▼ ▲
Dic_searchParent
Function Dic_searchParent( Dictionay as dictionary, BasePath as string, Path as string ) as string
パスがキーに入っている辞書の中から、指定したパスの親フォルダーのパスを検索します。
【引数】
Dictionay
BasePath
検索対象の辞書
Dictionay 引数のキーがフル パスのときの基準（フル パス）、Empty 可
Path
検索キーとなるファイル、または、フォルダーのパス、または、Empty
サンプル
返り値
親フォルダーのパス、または、Empty = 見つからない
T_PathDictionary_SearchParent
→ vbslib.vbs
ソース
→ T_Wildcard.vbs
テスト
Set dic = CreateObject( "Scripting.Dictionary" )
dic( "123" ) = 0
dic( "123\456" ) = 0
Assert Dic_searchParent( dic, "C:\Folder", "123\456\a.txt" ) = "123\456"
Assert Dic_searchParent( dic, "C:\Folder", "123\4567\a.txt" ) = "123"
Assert IsEmpty( Dic_searchParent( dic, "C:\Folder", "123" ) )
サンプル
Function GetOrAddIfNot( Path )
If dic.Exists( Path ) Then
Set GetOrAddIfNot = dic( Path )
Else
Set parent_item = Dic_searchParent( dic, "C:\Folder", Path )
If IsEmpty( parent_item ) Then Error
Set sub_item = NewSubFromParent( parent_item, Path )
Set dic( Path ) = sub_item
Set GetOrAddIfNot = sub_item
End Sub
サブ フォルダーの Item を、親フォルダーの Item を参考に作成します
→ PathDictionaryClass
関連
の SearchParent
→ SearchParent
BasePath 引数は、Dictionay 引数のキーがフル パスのとき、かつ、Path が相対パスのときに必要です。
それ以外のときは、Empty を指定できます。
FileSystemObject::GetParentFolderName
に近い処理をします。
← ▼ ▲
Dic_searchChildren
Sub Dic_searchChildren( Dictionay as dictionary, BasePath as string,
Path as string, out_PathArray as array of string, Option_ as Empty )
パスがキーに入っている辞書の中から、指定したパスの子ノードのパスを検索します。
【引数】
Dictionay
BasePath
検索対象の辞書
Dictionay 引数のキーがフル パスのときの基準（フル パス）、Empty 可
Path
検索キーとなるファイル・フォルダーのパス、または、Empty
out_PathArray
（出力） 子のフォルダーまたはファイルのパスの配列
Option_
Empty を指定してください
サンプル
Set dic = CreateObject( "Scripting.Dictionary" )
dic( "123\456" ) = 0
dic( "123\456\File.txt" ) = 0
Dic_searchChildren dic, "C:\Folder", "123", an_array, Empty '//(out)an_array
Assert IsSameArray( an_array, Array( "123\456", "123\456\File.txt" ) )
Dic_searchChildren dic, "C:\Folder", "123\456", an_array, Empty '//(out)an_array
Assert IsSameArray( an_array, Array( "123\456\File.txt" ) )
Dic_searchChildren dic, "C:\Folder", "12", an_array, Empty '//(out)an_array
Assert IsSameArray( an_array, Array( ) )
BasePath 引数は、Dictionay 引数のキーがフル パスのとき、かつ、Path が相対パスのときに必要です。
それ以外のときは、Empty を指定できます。
T_PathDictionary_SearchChildren
→ vbslib.vbs
ソース
→ T_Wildcard.vbs
テスト
out_PathArray 引数の配列要素がフル パスか相対パスかは、Dictionay 引数のキーがフル パスか
相対パスかによります。
フォルダーとサブ フォルダーに入っているファイルを一覧することに近い処理をします。
← ▼ ▲
QuickSortDicByKey
ソース
→ vbslib.vbs
Sub QuickSortDicByKey( in_out_Dictionary as dictionary )
【引数】
in_out_Dictionary
ソートする辞書
辞書に入っているデータをクイック ソートします。 辞書のキーでソートします。
辞書の Item はオブジェクト（Set で代入するもの）を指定してください。
辞書の Keys の順番が変わります。
比較関数 PathCompare
を使ってソートします。
関連
→ QuickSortDicByKeyForNotObject
← ▼ ▲
QuickSortDicByKeyForNotObject
Sub QuickSortDicByKeyForNotObject( in_out_Dictionary as dictionary )
【引数】
in_out_Dictionary
ソートする辞書
辞書に入っているデータをクイック ソートします。 辞書のキーでソートします。
辞書の Keys の順番が変わります。
辞書の Item はオブジェクト以外（Set で代入しないもの）を指定してください。
ソース
→ vbslib.vbs
比較関数 PathCompare
を使ってソートします。
テスト
→ GetIdentifiableFileNames のテスト
← ▼ ▲
DicItemToNameOnlyClassItem
Sub DicItemToNameOnlyClassItem( ref_Dictionary )
オブジェクトではない辞書のアイテムを、NameOnlyClass のオブジェクトに変換します。
【引数】
ref_Dictionary
アイテムを変換する辞書
ソートできる辞書にします。
NameOnlyClass の Delegate メンバーは Empty になります。
Set dic = CreateObject( "Scripting.Dictionary" )
DicItemToNameOnlyClassItem dic
サンプル
ソース
→ vbslib.vbs
関連
→ ArrayToNameOnlyClassArray
配列版
テスト
→ GetIdentifiableFileNames のテスト
← ▼ ▲
NameOnlyClassItemToDicItem
Sub NameOnlyClassItemToDicItem( ref_Dictionary )
NameOnlyClass のオブジェクトが入っている辞書を、Name プロパティの値の辞書に変換します。
【引数】
ref_Dictionary
アイテムを変換する辞書
ソートできる配列から戻します。
Set dic = CreateObject( "Scripting.Dictionary" )
NameOnlyClassItemToDicItem dic
サンプル
ソース
→ vbslib.vbs
関連
配列版
→ NameOnlyClassArrayToArray
テスト
→ GetIdentifiableFileNames のテスト
← ▼ ▲
QuickSort_fromDic
Sub QuickSort_fromDic( Dic as dictionary, out_Arr as array of object,
CompareFunc as function, Param as variant )
【引数】
Dic
ソートするデータが入った辞書。（辞書はソートされません）
辞書に入っているデータ（Dictionary::Item）をクイックソートします。 比較関数を指定します。
（出力） ソートした結果の配列。配列の要素はオブジェクト
out_Arr
CompareFunc
比較関数
Param
compare_func の第3引数
→ QuickSort
(src)
サンプル
QuickSort_fromDic dic, arr, GetRef("StdCompare"), Empty '//[out]arr
関連
→ DicToArr
← ▼ ▲
QuickSort_fromDicKey
ソース
→ vbslib.vbs
Set dic = CreateObject( "Scripting.Dictionary" )
QuickSort_fromDicKey dic, sorted_items, Empty '//[out] sorted_items
For Each item In sorted_items
echo item.Key +" : "+ item.Item
Next
Sub QuickSort_fromDicKey( in_out_Dictionary as dictionary,
out_SortedKeysArray as array of string, in_Empty as Empty )
辞書に入っているデータをクイック ソートします。 辞書のキーでソートします。
【引数】
in_out_Dictionary
out_SortedKeysArray
ソートする前のキーが入った辞書
（出力） ソートした後のキーが入った配列。配列の要素は
in_Empty
Empty を指定してください
サンプル
DicElem オブジェクト
ソートした結果は、out_SortedKeysArray 引数に出力されます。
→ DicElemArrayKeyToArr
関連
比較関数 PathCompare
を使ってソートします。
← ▼ ▲
ShakerSortDicByKey
Sub ShakerSortDicByKey( Dic as Dictionary )
【引数】
Dic
ソートする辞書
辞書に入っているデータをシェーカーソートします。 辞書のキーでソートします。
テスト
→ T_ShakerSort.vbs
T_ShakerSortDicByKey
ソース
→ vbslib.vbs
辞書の Item はオブジェクト（Set で代入するもの）を指定してください。
← ▼ ▲
ShakerSortDicByKeyCompare
Sub ShakerSortDicByKeyCompare( Dic as Dictionary,
CompareFunc as function, CompareFuncParam as variant )
【引数】
Dic
ソートする辞書
辞書に入っているデータをシェーカーソートします。 辞書のキーでソートします。
テスト
→ T_ShakerSort.vbs
T_ShakerSortDicByKeyCompare
ソース
→ vbslib.vbs
辞書の Item はオブジェクト（Set で代入するもの）を指定してください。
CompareFunc
比較関数
CompareFuncParam
CompareFunc の第3引数
ShakerSortDicByKeyCompare dic, GetRef( "NumStringCompare" ), Empty
サンプル
←
↓