AND Bedingung bei Sichtbarkeitssteuerung funktioniert nicht

  • Loksim-Version: 2.9.2
    Programmteil: Simulation
    Betriebssystem: Windows 7
    Rechnerkonfiguration:
    Fehlerbericht gesendet:
    _________________________


    Hallo Entwickler


    Seit V2.9.2 ist es ja möglich, Sichtbarkeitsbedingungen mit Strings abzufragen. Davon möchte ich jetzt Gebrauch machen für meine diversen ZZA, um bei der Endstation einen anderen Text einzugeben.
    Ich habe verschiedene sich ausschliessende Bedingungen, welche ZZA angezeigt werden soll:
    1) Zug hält hier
    2) Zug ist an Endstation angekommen
    3) Zug hält hier nicht


    Meine Frage betrifft nur Fall 1. Die Bedingung ist
    FahrplanDaten::LastHalt!="Neustadt Hbf." && FahrplanDaten::Halt("Neustadt Hbf.")
    Dabei wird jedoch kein ZZA angezeigt.
    Mit den jeweils einfachen Bedingungen FahrplanDaten::LastHalt!="Neustadt Hbf." oder FahrplanDaten::Halt("Neustadt Hbf.") wird sie jedoch angezeigt.
    Wenn also die erste Bedingung zutrifft und ebenso die zweite, müsste die kombinierte Bedingung mit AND ja auch ein Ergebnis zeigen.



    Für den Fall 2 habe ich folgende Bedingung, die auch funktioniert: FahrplanDaten::LastHalt=="Neustadt Hbf" || FahrplanDaten::LastHalt=="Neustadt Hbf."
    Dabei muss ich erwähnen, dass ich den Hp für die Rückwärtsfahrt mit einem Punkt ergänzt habe, um die Strecke in einer Schleife befahren zu können. Deshalb diese ODER Bedingung.



    Besten Dank für Hilfe



    lg
    Bruno

  • Hallo Bruno,


    warum willst Du es Dir so schwer machen, wenn es doch eine ganz einfache Lösung zu dem Problem gibt.


    Meine Zugzielanzeige steuere ich wie folgt:


    1. Den Zugzielanzeiger an sich habe nur mit Beschriftung des Gleises ausgestattet und unter Streckenobjekte in die Strecke eingebaut. (Siehe Bild 1)


    2. In einer weiteren Gruppendatei habe ich die Beschriftung des Zugzielanzeigers eingebaut (siehe Bild 2) und diese in die Strecke unter Streckenobjekte in eine weitere Datei eingebaut.


    [Blockierte Grafik: http://foto.arcor-online.net/palb/alben/26/5383626/6138646530373061.jpg]




    Die Datei wo ich die Beschriftung eingebaut habe, habe unter Sichtbarkeitssteuerung folgendes eingegeben: FahrplanVars::N_Lage_13.33_Uhr


    Den Steuerbefehl "FahrplanVars::N_Lage_13.33_Uhr" habe ich dann in dem entsprechenden Fahrplan unter "Benutzerdefinierte Variablen" eingegeben. So kann ich die Beschriftung individuell zu jedem Fahrplan entsprechend einstellen. Das funkttioniert aber nur zu Fall1.



    Ich hoffe, das ich Dir ein wenig weiter helfen konnte.



    Viele Grüße
    Olaf

  • Hallo,
    FahrplanDaten::LastHalt ist derzeit nur für dynamische Schriften nicht aber für Sichtbarkeitsausdrücke verfügbar


    lg
    Lukas


    PS: Nachdem ich das selbst schon fast vergessen hätte, wird das wohl bei der nächsten Version auch in Sichtbarkeitsausdrücken gehen

  • Lukas


    Dann kannst du mir sicher plausibel erklären, wie die Sichtbarkeitsbedingung im Fall 2 einwandfrei funktioniert?


    lg
    Bruno

  • Hast Du auch die Gegenprobe gemacht das ganze auf einem Fahrplan zu testen der nicht in Neustadt endet? Das Ergebnis ist aufgrund der nicht vorhandenen LastHalt Variable undefiniert. Vielleicht passt es bei Dir gerade zufällig, aber sicherlich nicht im Allgemeinen


    lg
    Lukas

  • Also ich habe dir die Definitionen für
    1) einen Halt
    http://workupload.com/file/RecSCfVZ
    2) Endstation
    http://workupload.com/file/1lIQPYtS
    3) Durchfahrt ohne Halt
    http://workupload.com/file/1e18YzQe



    Und hier die Ergebnisse:
    1) http://workupload.com/file/gZDAg5XG
    2) http://workupload.com/file/6Dh3BosU
    3) http://workupload.com/file/vCUgH6Nk



    Die ZZA für den Halt ist absichtlich 80 cm tiefer gelegt, sodass sich beide ZZA nicht überlappen. Nur testweise



    lg
    Bruno

  • Ich weiß nicht genau ob da jetzt noch eine Frage darin steckt. Aber ich kanns nicht klarer sagen als:
    Sobald FahrplanDaten::LastHalt in einem Sichtbarkeitsausdruck vorkommt, ist das Ergebnis des Ausdrucks undefiniert


    lg
    Lukas

  • Tach,


    und undefiniert bedeutet, das das Ergebnis alles sein kann. Und das wahlweise mal so und mal so.


    Gruss
    Uwe

    --
    Wenn du die Götter zum Lachen bringen willst, mach’ einen Plan.

  • Tja, da habe ich was missverstanden.


    In der LoksimDetailDoku.pdf auf Seiten 30/31 wird ja beschrieben, dass auch Zeichenketten verglichen werden können. Was ich nicht beachtet habe, ist, dass "FahrplanDaten::LastHalt" nicht als gültiger Variablenname in der Liste aufgeführt ist.
    Ausserdem mutet es seltsam an, dass die Zeichenketten in einen Hashwert umgerechnet werden, da ja jede vernünftige Programmiersprache den direkten Zeichenkettenvergleich anbietet, also auch <, = oder >. Das hätte zudem den Vorteil, dass auch Substrings verglichen werden könnten, sodass man nicht den kompletten Halt Namen angeben müsste, sondern nur den relevanten Anfang desselbigen, z.B. anstelle von "Neustadt Hbf" würde auch "Neustadt H" zu einem eindeutigen Ergebnis führen.


    Ausserdem habe ich nochmal einen Test mit einem anderen, neuen Objekt gemacht und kann definitiv sagen, dass das Ergebnis nicht undefiniert ist, sondern immer das selbe Objekt unter der gleichen Bedingung angezeigt wird.


    NB: Das sind jetzt keine Fragen gewesen sondern nur Feststellungen.


    lg
    Bruno

  • Ausserdem mutet es seltsam an, dass die Zeichenketten in einen Hashwert umgerechnet werden, da ja jede vernünftige Programmiersprache den direkten Zeichenkettenvergleich anbietet, also auch <, = oder >.

    Nein wirklich? 8o Verdammt, das hätte ich wirklich schon oft gebraucht

  • Hallo Bruno,


    wenn Lukas Dir schreibt, das daß so nicht funktioniert wie Du es Dir vorstellt, dann akzeptiere es bitte auch so. Er hat die Möglichkeit in den Programmcode zu schauen, ob es geht oder nicht.


    Was vielleicht noch eine Möglichkeit wäre, wenn Du versuchen würdest es in der Sichtbarkeitssteuerung über eine Zeitsteuerung zu steuern. Das ist mal ein Tipp ohne das ich ihn ausprobiert habe, vielleicht kannst Du so das gewünschte Ergebnis erzielen.


    Viele Grüße
    Olaf