Home > Web And Technology > VB6 - 連想配列の使い方

VB6 - 連想配列の使い方

主張

VBでもPerlライクな連想配列(HASH)を使いたい

解決策

Dictionary オブジェクトを使うべし

同オブジェクトのVBヘルプを見ても、そこには「Dictionary オブジェクトは、PERL の関連配列と同等です」と書かれているように、思いっきり連想配列として使って欲しそうなオブジェクトです。「PERLの関連配列」って微妙な和訳ですけど...

Dictionaryの使い方

変数宣言&項目追加

Dim h as Object
Set h = CreateObject("Scripting.Dictionary")

'項目追加の基本形

h.Add "key1","val1"
h.Add "key2","val2"
h.Add "key3","val3"

'Perlライクな書き方での項目追加も可能

h.Item("key4") = "val4"
h.Item("key5") = "val5"

'プロパティを省略した場合にデフォルトでコールされるのは Item プロパティなので
'よりPerlライクな書き方も可能

h("key6") = "val6"

項目の値変更

'Itemプロパティに対して直接値をセットするだけでOK

h.Item("key4") = "new val4"

項目の削除

'Removeメソッドを使う
'例:下記のように書くと key2 : val2 のKey:Valueセットが削除される h.Remove("key2")

ループ処理

'Key値によるループ処理
dim v as variant For Each v In h.Keys Debug.Print "KEY値:" & v & "VALUE値:" & h.Item(v) Next 'Value値によるループ処理も可能(使用頻度は低いはず) For Each v In h.Items Debug.Print v Next

項目の存在確認

'指定したKEY値が Dictionary の中に存在する場合は True が返る
'例:下記のように書くと vbTrue 値が返る h.Exists("key3")

前回書いた Collection と、今回の Dictionary を駆使する事で Array & Hash によるデータ構造体を Perl構造体 を扱うように記述できるようになります。もっとも VB.NET の世界に入ってしまえばOOP前提ですのでクラスの入れ子構造で同じようなデータ構造体を自然と扱うようになるのでしょうけど。

おまけ

VB.NETの世界では Dictionaryオブジェクトではなく、Hashtable というクラスが連想配列として用意されているようです → System.Collections.Hashtable
詳しい事は @ITのTIPS記事を参照の事。

Comments:0

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Remember personal info

Home > Web And Technology > VB6 - 連想配列の使い方

Search
Feeds

Page Top