So ist es.
Aber ich will ehrlich sein. Erst dein Hinweis hat mich auf die Idee gebracht. Daher gebe ich das Kompliment gerne zurück.
Moderator: Co-Administratoren
So ist es.
Lt. Skript-Doku ist .Name() vom Typ String (var geht natürlich immer)
Hi Michael,MichaelN hat geschrieben: ↑13.07.2020, 12:05ich habe den Code dabei etwas aufgeräumt...Code: Alles auswählen
!- ### SysVar-Auslöser finden ### ! *** Hier erste und letzte Taste definieren integer min = 4; integer max = 6; string ausloeser = "???"; object src = dom.GetObject("$src$"); if (src){ string ausloeser = src.Name(); dom.GetObject("TEST_SV_xyz0").State(ausloeser); } WriteLine ("Auslöser: "#ausloeser); !- ### Auslöser auf True, alle anderen auf False setzen ### string taste; string sysvar; foreach(taste,system.GenerateEnum(min,max)) { sysvar = "TEST_SV_xyz" + taste; if ( sysvar == ausloeser ) { WriteLine (sysvar #": true"); dom.GetObject(ID_SYSTEM_VARIABLES).Get("sysvar").State(true); } else { WriteLine (sysvar #": false"); dom.GetObject(ID_SYSTEM_VARIABLES).Get("sysvar").State(false); } }
Nein, das muss funktionieren. Siehe meinen Code. Ich weiß nur nicht, was Du mit dem Inhalt willst, den habe ich aus dem Code eliminiertBTW:
Wieso funktioniert das zerlegen von "ausloeser" so nichtDie Variablen "name" und "inhalt" sind (wohl) leer.Code: Alles auswählen
string name = src.Name(); boolean inhalt = src.Value();
Doch, Doch ... hatte ich gesehen und auch getestet, aber bin nicht damit ganz klar gekommen .dtp hat geschrieben: ↑13.07.2020, 12:14Na ja, ich hatte ja weiter oben eine mögliche Lösung gepostet, aber die willst du anscheinend nicht nutzen.
Da wird einfach abgefragt, welche Systemvariable auf true gesetzt wurde, um die anderen auf false zu setzen. Geht natürlich mit entsprechenden Änderungen auch für andere Binärwerte. Man muss also nicht alle Systemvariablen auf false setzen, um dann anschließend die auslösende wieder auf true zu setzen.
OH Mann ... bin ich ein Holzkopf mit einem fetten Holzbalken vor der Birne !