BahnLand Geschrieben 18. November 2016 Geschrieben 18. November 2016 Hallo Neo, im Rahmen der Erstellung der Ereignisverwaltung für meine Gotthard-ANlage ist mir aufgefallen, dass man zwar den Bezeichner einer Variablen selbst in einer Variable hinterlegen kann, eine Referenzierung des Inhalts der hinterlegten Variable über die referenzierende Variable aber nicht möglich ist. Anders ist dies bei Objekten. Man kann hier das Objekt in einer Variable hinterlegen, und dann über das $-Zeichen oder die Klammer "()" den Inhalt des referenzierten Objekts weiter verarbeiten. Zur Veranschaulichung habe ich ein kleines Beispiel angehängt: Variablen-Referenzen.mbp Das Beispiel enthält zwei Szenarien: Im ersten Szenario werden durch das Betätigen zweier Schalter gegenseitige Informationen ausgetauscht. Das nächste Bild zeigt die zugehörigen Ereignisdefinitionen für einen Schalter. Für den zweiten Schalter existieren analoge Ereignisdefinitionen, wobei jeweils nur die Bezeichnung des auslösenden Schalters ausgetauscht werden muss. Ich wende diese Methode bei der Einrichtung von Fahrstraßen über ein Weichenfeld in einer Bahnhofseinfahrt an, wobei auf beiden Seiten mehrere Schalter (jeweils ein Zufahrtsgleis repräsentierend) vorhanden sein können. Da hierdurch unterschiedliche Schalter-Kombinationen möglich sind, werden die jeweiligen Partner-Schalter ausschließlich über eine globale Referenzvariable und am jeweilgen Schalter festgemachte Objekt-Variablen (<Objekt>.Partner) angesprochen, in denen die Informationen über den jeweiligen "Partner"-Schalter hinterlegt werden. Auf die Inhalte der jeweils hinterlegten Referenzen kann hierbei in Abhängigkeit von der konkreten Situation entweder durch das vorangestellte $-Zeichen oder über die "Objekt-Klammerung" (Referenz in "()" wird durch referenziertes Objekt ersetzt) zugegriffen werden. Im zweiten Szenario wird in einer Variable mit der Bezeichnung "VariablenReferenz" eine weitere Variable mit ihrem Namen "Variable" referenziert. Die Absicht war, auf den Inhalt der referenzierten Variable "Variable" über die referenzierende Variable "VariablenReferenz" zuzugreifen und diesen Inhalt zu modifizieren. Leider geht das nicht. Denn obwohl die Varable "VarablenReferenz" als Inhalt den Bezeicher der Variablen "Variable" enthält, wird dann, wenn man bei der Aktion "Variable setzen" als Name "$VariablenReferenz" (mit führendem $-Zeichen) spezifiziert, trotzdem die Variable "VariablenReferenz" selbst und nicht wie von mir beabsichtigt die dort referenzierte Variable "Variable" modifiziert. Das Voranstellen eines $-Zeichens ist hier also wirkungslos. Die nachfolgenden Abbildungen zeigen den Zustand der Variablen des hier gezeigten "Anlagen"-Beispiels vor und nach dem Betätigen des "Zähler"-Schalters. Und jetzt mein Feature-Wunsch: Wäre es eventuell möglich, die Funktionalität der Zugriffs mittels "$" oder "()" auch auf Variablen-Inhalte zuzulassen, die eine Variable (anstatt eines Objekts) repräsentieren? Viele Grüße BahnLand
Neo Geschrieben 19. November 2016 Geschrieben 19. November 2016 Hallo BahnLand, ich will dir da nicht so viel Hoffnung machen, aber Änderungen an der EV wird es erst mit der neuen Ereignisverwaltung geben, die nach der kommenden Version V4 in Angriff genommen wird. Dann werden Variablenzugriffe mit einer richtigen Programmiersprache vergleichbar sein, die dann auch solche Referenzen erlaubt. Viele Grüße, Neo
BahnLand Geschrieben 19. November 2016 Autor Geschrieben 19. November 2016 Hallo Neo, dann werde ich mich wohl noch ein Weilchen mit Notbehelfen und Umgehungen behelfen müssen. Viele Grüße BahnLand
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen.
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden