11-17-2014 05:45 AM
Hallo Diadem User
gibt es in Diadem (eventuell mit Zusatztools) die Möglichkeit im vbs Code verschachtelte Dictionarys zu debuggen ? Im Dictionary gibt es Unterdictionarys , arrays etc. Wie kann der Inhalt dargestellt werden ? Ich kenne die Struktur des dictionarys nicht. Diese soll durch das Debug-tool dargestellt werden.
Gruß
Heinz
11-20-2014 07:34 AM
Hallo Heinz,
haben Sie dazu vielleicht ein kleines Beispiel, was mit "verschachtelten Dictionarys" gemeint ist?
Grüße
Nina
11-21-2014 02:00 PM
Hi Heinz,
By any chance do you have access to the Visual Studio debugger? A developer was able to see DIAdem VBScript dictionary hierarchy in there.
Brad Turpin
DIAdem Product Support Engineer
National Instruments
11-24-2014 05:41 AM
Hallo Nina
anbei der Code der ein verschachteltes Dictionary erzeugt.
Dim dict_a ,dict_b,dict_c
Dim myarray_a ,myarray_b
myarray_a=array(1,2)
myarray_b=array(1,array(6,5,4,3,2,1))
set dict_a=CreateObject("Scripting.Dictionary")
set dict_b=CreateObject("Scripting.Dictionary")
set dict_c=CreateObject("Scripting.Dictionary")
dict_a.Add "Erster Eintrag dict_a",5
dict_a.Add "Zeiter Eintrag dict_a","Ein Text"
dict_b.Add "1.Eintrag dict b",myarray_a
dict_b.Add "2.Eintrag dict_b" ,dict_a
dict_c.add "Erster Eintrag Dict_c" , dict_b
dict_c.add "Zeiter Eintrag Dict_c",myarray_b
Wie sieht nun dict_c aus ?
So könnte es visualisiert aussehen:
<Dictionary> (2)
Erster Eintrag Dict_c [String] -> <Dictionary> (2)
1.Eintrag dict b [String] -> Array[1](
Integer: 1
Integer: 2
)
2.Eintrag dict_b [String] -> <Dictionary> (2)
Erster Eintrag dict_a [String] -> Integer: 5
Zeiter Eintrag dict_a [String] -> String: 'Ein Text'
Zeiter Eintrag Dict_c [String] -> Array[1](
Integer: 1
Array[5](
Integer: 6
Integer: 5
Integer: 4
Integer: 3
Integer: 2
Integer: 1
)
)
Gruß
Heinz
11-25-2014 02:07 AM
Es gibt einen Weg wenn man den Microsoft Script Debugger für SUD eingeschaltet hat.
Macht man sich nun einen SUD dialog der nur die folgenden Zeilen im Globalen Bereich beinhaltet
Option Explicit 'Note: In this area area you can program auxiliary variables and functions that you can use in the entire dialog box. dim varToInspect if isObject(dialog.GetArgument) then set varToInspect = dialog.GetArgument else varToInspect = dialog.GetArgument end if ' check the content of varToInspect. It is possible to do method calls on it in the debugger stop ' the jit debuger will stop here dialog.Cancel
und nutzt diesen SUD dann folgendermaßen
Option Explicit 'Forces the explicit declaration of all the variables in a script.
Dim dict_a ,dict_b,dict_c
Dim myarray_a ,myarray_b
myarray_a=array(1,2)
myarray_b=array(1,array(6,5,4,3,2,1))
set dict_a=CreateObject("Scripting.Dictionary")
set dict_b=CreateObject("Scripting.Dictionary")
set dict_c=CreateObject("Scripting.Dictionary")
dict_a.Add "Erster Eintrag dict_a",5
dict_a.Add "Zeiter Eintrag dict_a","Ein Text"
dict_b.Add "1.Eintrag dict b",myarray_a
dict_b.Add "2.Eintrag dict_b" ,dict_a
dict_c.add "Erster Eintrag Dict_c" , dict_b
dict_c.add "Zeiter Eintrag Dict_c",myarray_b
call SuddlgShow("Dlg1", CurrentScriptPath & "debugWithSud.sud", dict_c)
kann man im dann hochflammenden Script debugger den Inhat des Dictionaries untersuchen. Dies funktioniert über Script Befehle die man im Watch Fenster eingeben kann.
ist nicht ganz komfortabel aber vielleicht hilft es.