SmartTags()
Ich nehme mal an, Du meinst mein Codebeispiel. Daß Dein Skript so nun korrekt funktioniert?
Wenn man ein erstelltes Skript kopiert und ins nächste Flex Projekt einfügt, dann werden alle intern deklarierten
Variablen (die nicht mit der SPS verlinkt wurden) in smarttags umgewandelt. Also von Gelb nach smarttags...
Warum passiert das?
Ich glaube, jetzt habe ich erst verstanden, was Du meinst:
Beim Kopieren der Skripte werden nicht die referenzierten (und mitkopierten) Variablen "umgewandelt", sondern im
Skript-Text werden die "
nackt dastehenden" Variablennamen von global deklarierten RT-Variablen (Panel-interne
UND SPS-verlinkte) in SmartTags() eingeschlossen.
Code:
[COLOR="Green"]Aus :[/COLOR]
skriptvar = [COLOR="DarkOrange"]Var_1[/COLOR]
[COLOR="green"]wird :[/COLOR]
skriptvar = SmartTags([COLOR="DarkRed"]"Var_1"[/COLOR])
Ja, das ist eigentlich in Skripten der Normalfall, daß auf die im Flex-Projekt global deklarierten RT-Variablen
mit SmartTags("...") zugegriffen wird (kein Unterschied, ob als Panel-interne oder SPS-verlinkt deklariert).
Zulässige Ausnahme (aus der WinCC flexible Onlinehilfe):
Wenn der Variablenname den VBS-Namenskonventionen entspricht, brauchen Sie die SmartTags-Auflistung nicht zu
verwenden. Sie können die Variable direkt über ihren Namen ansprechen, ...
Zwingend erforderlich ist SmartTags("Varname"), wenn die RT-Variable in einem Ordner unterhalb "Variablen"
deklariert wurde, wenn also der Variablenname einen Pfad enthält, z.B. SmartTags("_System\Hostname") oder
SmartTags("_Intern\ActiveGroupNumber").
Beim Einfügen eines kopierten Skriptes (sogar im selben Projekt), wird das Skript offensichtlich durch einen
Konverter/Syntaxprüfer gejagt, der grundsätzlich alle Zugriffe auf globale RT-Variablen mit SmartTags() umgibt.
Im Ziel-Projekt könnte ja ein Skript mit dem gleichen Namen wie eine RT-Variable des Quell-Projektes existieren.
Und ich glaube mich zu erinnern, daß die automatische Anpassung der Variablennamen in Skripten manchmal nicht
korrekt funktioniert, wenn die Variable nachträglich in einen anderen Variablen-Ordner verschoben wird und
SmartTags() nicht verwendet wurde. Das soll vielleicht verhindert werden.
Aber es ist doch nicht "schlechter", wenn man die smarttags anstelle normaler variablen nimmt, oder?!
Alle im Flex-Projekt global deklarierten RT-Variablen sind Smarttags. Egal, ob als Panel-intern oder SPS-verlinkt
deklariert. Es gibt keinen Unterschied "Smarttags" und "normale Variablen".
Ich schreibe das SmartTags() grundsätzlich immer mit. Ich finde die Skripte dadurch besser lesbar.
Gruß
Harald