VBS'de sözlüklerin bir sözlük oluşturmaya çalışıyorum ve çalışabilirim; bununla birlikte, alt düzey sözlüğümün değere değil, referans olarak erişildiği görülmektedir. Sözlükler sözlük nasıl oluşturulur vbscript
denedim bu: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")
Ben benim elemanları sözlüğü referans gereğidir düşündürüyor değerler, tüm değişiklikleri değerlerinden biri değiştirmek
. Bunun gerçekleşmesi için bir yol var mı? Her alt sözlüğün farklı olmasını istiyorum. ve bu bir subdictionary işaret edecek iki anahtar ayarlarken - Sadece bir subdictionary oluştururken böylece
Benim alt sözlüklerimin çoğu sadece farklı değerler ile aynı olacak. – FighterHayabusa
Bir sözlük yazıldığında, bunu belirli bir şekilde başlatan bir alt yazı yazabilirim. Ardından 3 adımlı işlemi takip edin: 1) sözlüğü yaratın, 2) Başlatma işlemini altta çalıştırın, 3) bunu en üst düzey sözlüke atayın. –
Temelde bir veri türü gibi dictElements kullanmak istedim. Bunu yaptım ve sözlüğe yılında her öğe için 'Set sözlüğü ("DigitalInputOne") = CreateObject ("Scripting.Dictionary") Seti sözlüğü ("DigitalInputTwo") = CreateObject ("Scripting.Dictionary") işleri Her öğe için dictElements dictionary (item) .Add element, dictElements (element) Sonraki Sonraki 'ama bence çok iyi değil. Sınıfları kullanamıyorum çünkü bunu WinCC'de yapıyorum. – FighterHayabusa