saarlaender
Level-1
- Beiträge
- 94
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
TIA v16, WinCC Runtime Advanced, VB Script
Servus,
ich habe eine Array-Verschachtelung die ich via Bildbaustein-Script adressieren möchte.
Das Array sieht in etwa so aus:
Array_1[1].Array_2[1].Array_3[1]
Das letzte Array ist Array of bool, daher kommt da nichts mehr nach
Direkt adressieren geht natürlich. Aber alle Versuche, die jeweiligen Array-Indexnummern variabel zu gestalten gingen bisher schief.
Es gab zwar nie eine Meldung beim Übersetzen, aber später in der Runtime beim Script-Aufruf kommt eine Meldung "xyz no Tag ...", obwohl die Variable korrekt zusammengesetzt wurde (das wird in der Fehlermeldung mit angezeigt).
Hat jemand eine Idee, wie genau ich die verschiedenen Array-Indexnummern über Schnittstellenvariablen (Int) des Bildbausteins steuern kann?
Dazu soll das Script zyklisch aufgerufen werden. Der Trick mit der Übergabe eines Taktmerkers funktioniert nicht - das Script wird nur aufgerufen, wenn ich z.B. eine Tastenaktion verwende - nicht aber die Schnittstellenvariable auf Änderungen überwache.
### Schnittstelle Bildbaustein ###
Nummer_1: Int
Nummer_2: Int
Nummer_3: Int
Daten: UDT mit Arrays
### interne Variablen im Bildbaustein ###
Int_1: Int
Int_2: Int
BG_Taste_1: Bool (Variable für die Hintergrund-Animation zum Test - soll vom Array gelesen werden)
### Script im Bildbaustein ###
Dim Int1
Dim Int2
Dim Name
Set Int1 = SmartTags("Properties\Nummer_1")
Set Int2 = SmartTags("Properties\Nummer_2")
SmartTags("Int_1") = Int1
SmartTags("Int_2") = CInt(Int2)
Beide Varianten gehen - die Variablen Int_1 und Int_2 tragen die entsprechende Nummer die über die Schnittstelle dem Bildbaustein übergeben wird.
Folgenden Scriptteil habe ich auch ohne SmartTags versucht (dh mit Int1 und Int2 statt SmartTags("Int_1") etc.
If SmartTags("Properties\Daten.Array_1[" & SmartTags("Int_1") & "].Array_2[" & SmartTags("Int_2") & "].Array_3[0]") = True Then
SmartTags("BG_Taste_1") = True
End If
Servus,
ich habe eine Array-Verschachtelung die ich via Bildbaustein-Script adressieren möchte.
Das Array sieht in etwa so aus:
Array_1[1].Array_2[1].Array_3[1]
Das letzte Array ist Array of bool, daher kommt da nichts mehr nach
Direkt adressieren geht natürlich. Aber alle Versuche, die jeweiligen Array-Indexnummern variabel zu gestalten gingen bisher schief.
Es gab zwar nie eine Meldung beim Übersetzen, aber später in der Runtime beim Script-Aufruf kommt eine Meldung "xyz no Tag ...", obwohl die Variable korrekt zusammengesetzt wurde (das wird in der Fehlermeldung mit angezeigt).
Hat jemand eine Idee, wie genau ich die verschiedenen Array-Indexnummern über Schnittstellenvariablen (Int) des Bildbausteins steuern kann?
Dazu soll das Script zyklisch aufgerufen werden. Der Trick mit der Übergabe eines Taktmerkers funktioniert nicht - das Script wird nur aufgerufen, wenn ich z.B. eine Tastenaktion verwende - nicht aber die Schnittstellenvariable auf Änderungen überwache.
### Schnittstelle Bildbaustein ###
Nummer_1: Int
Nummer_2: Int
Nummer_3: Int
Daten: UDT mit Arrays
### interne Variablen im Bildbaustein ###
Int_1: Int
Int_2: Int
BG_Taste_1: Bool (Variable für die Hintergrund-Animation zum Test - soll vom Array gelesen werden)
### Script im Bildbaustein ###
Dim Int1
Dim Int2
Dim Name
Set Int1 = SmartTags("Properties\Nummer_1")
Set Int2 = SmartTags("Properties\Nummer_2")
SmartTags("Int_1") = Int1
SmartTags("Int_2") = CInt(Int2)
Beide Varianten gehen - die Variablen Int_1 und Int_2 tragen die entsprechende Nummer die über die Schnittstelle dem Bildbaustein übergeben wird.
Folgenden Scriptteil habe ich auch ohne SmartTags versucht (dh mit Int1 und Int2 statt SmartTags("Int_1") etc.
If SmartTags("Properties\Daten.Array_1[" & SmartTags("Int_1") & "].Array_2[" & SmartTags("Int_2") & "].Array_3[0]") = True Then
SmartTags("BG_Taste_1") = True
End If
Zuletzt bearbeitet: