Jump to content

Empfohlene Beiträge

Geschrieben

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:

Paarweise Verknüpfung.jpg

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. 

Verknüpfung.jpg

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.

Referenz-Variable.jpg

Im zweiten Szenario wird in einer Variable mit der Bezeichnung "VariablenReferenz" eine weitere Variable mit ihrem Namen "Variable" referenziert.

Referenz.jpg

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.

Variablenliste_1.jpg    Variablenliste_2.jpg

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

 

Geschrieben

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

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...