2
VBSで辞書の辞書を作成しようとしています。しかし、それは私のサブレベルの辞書は、値ではなく参照によってアクセスされているようです?辞書の辞書を作成する方法vbscript
私はこれを試してみました:
Dim s, fso, f, ts, str, fRead, line, i, dictElements, dictionary, screenItem
Set s = CreateObject("System.Text.StringBuilder")
Set fso = CreateObject("Scripting.FileSystemObject")
Set dictElements = CreateObject("Scripting.Dictionary")
Set dictionary = CreateObject("Scripting.Dictionary")
'add elements to dictionary
dictElements.Add "Name", "MyName"
dictElements.Add "Setpoint", 100.0
dictElements.Add "Process Value", 80.6
'Create Data Structure
dictionary.Add "DigitalInputOne", dictElements
dictionary.Add "DigitalInputTwo", dictElements
'test dictionary
dictionary("DigitalInputTwo")("Name")= "Hello"
dictionary("DigitalInputTwo")("Setpoint")= 40.123
HmiRuntime.Screens("Home").ScreenItems("Text field_1").Text = dictionary ("DigitalInputOne")("Name")
HmiRuntime.Screens("Home").ScreenItems("Text field_2").Text = dictionary("DigitalInputOne")("Setpoint")
HmiRuntime.Screens("Home").ScreenItems("Text field_3").Text = dictionary("DigitalInputOne")("Process Value")
HmiRuntime.Screens("Home").ScreenItems("Text field_4").Text = dictionary("DigitalInputTwo")("Name")
HmiRuntime.Screens("Home").ScreenItems("Text field_5").Text = dictionary("DigitalInputTwo")("Setpoint")
HmiRuntime.Screens("Home").ScreenItems("Text field_6").Text = dictionary("DigitalInputTwo")("Process Value")
私はそれは私が私の要素の辞書が参照によってであると思わせるこれは、すべての値を変更する値のいずれかを変更した場合。これを価値によって実現させる方法はありますか?私はそれぞれのサブ辞書を違うものにしたい。
テンプレートを作成することができますか、それを行うにはより良い方法がありますか?私のサブディクショナリのほとんどは、異なる値でのみ同じになります。 – FighterHayabusa
私は、辞書を渡すと特定の方法でそれを初期化するサブを書くでしょう。次に、3段階のプロセスに従います.1)辞書を作成する、2)初期化サブを実行する、3)トップレベル辞書に割り当てる。 –
私は基本的にデータ型のようにdictElementsを使いたいと思っていました。 (DigitalInputTwo)= CreateObject( "Scripting.Dictionary") 各項目の辞書には (それぞれの項目について) '辞書を設定する(" DigitalInputOne ")= CreateObject(" Scripting.Dictionary ") 辞書dictElementsの各要素について 辞書(項目).Add要素、dictElements(要素) 次 次は 'それはとても良いとは思わない。私はWinCCでこれをやっているので、クラスを使用することはできません。 – FighterHayabusa