Problem mit der (Darstellung der) Uhrzeit

Das Forum befindet sich im reduzierten Betrieb. Die Addon- und Supportforen bleiben weiterhin verfügbar.
Bitte beachte, dass OMSI nicht mehr weiterentwickelt wird. Ein Teil der Entwickler widmet sich inzwischen der Entwicklung eines neuen Simulators. Weitere Informationen zum LOTUS-Simulator findest Du hier.
Ein communitybetriebenes Nachfolge-Forum wird hier verlinkt, sobald es gegründet und bereit ist.
  • Moinsen Leute, ich hab da ein kleines Problem.


    Ich möchte die Uhrzeit auf einem Textfeld ausgeben lassen. Das ist auch kein Problem, es sei denn, ich habe einen Fahrplan aktiv.
    Diese Zeilen benutze ich zum Anzeigen der Uhrzeit (entnommen aus dem IBIS Script):

    Code
    1. (L.S.Time) 3600 / s0 trunc s1 "02" $IntToStrEnh $+ ":" $+
    2. l0 l1 - 60 * trunc "02" $IntToStrEnh $+
    3. (S.$.Uhrzeit)


    Wenn ich das richtig verstehe:
    (L.S.Time) ist die "Uhrzeit gerechnet von Mitternacht des aktuellen Tages" (laut OMSI-Wiki)

    • (L.S.Time) 3600 / -> Teilt die Zeit (in Sekunden) zu Stunden (in Dezimal)
    • s0 trunc s1 -> s0 wird abgerundet und in s1 gespeichert
    • "02" $IntToStrEnh $+ -> s1 wird "formatiert"
    • ":" $+ -> Doppelpunkt wird an den String angefügt
    • l0 l1 - 60 * -> Registerwert l1 wird von l0 abgezogen (wofür?) und danach mit 60 multipliziert
    • trunc -> Das Ergebnis wird abgerundet
    • "02" $IntToStrEnh $+ -> Das ganze wird formatiert und dem String angefügt (Ist dann z.B. 11:11)
    • Das ganze wird in der String-Variable Uhrzeit gespeichert

    Wenn ich Verfrühung habe, wird mir vor der Uhrzeit ein "-" angezeigt, bei Verspätung entsprechend ein "+". Allerdings weiß ich echt nicht warum. Im IBIS wird ja auch die Uhrzeit korrekt angezeigt anstatt ein "+" oder "-". Kann mir da einer Hilfestellung geben? Ich habe mich echt versucht und auch versucht es zu verstehen und verzweifel gerade *etwas* daran. Woher kommt das "Vorzeichen"? Ich bekomme es einfach nicht raus, woher dieses "Vorzeichen" kommt.

    ;(


    LG

    Leider muss ich sagen, dass ich vorerst alle Projekte einstellen werde (Tholay, FranzBauers Objekte).
    Grund dafür: Die OMSI-Community. :(

  • Moin,


    das Problem ist hier, dass du hinter dem ersten $IntToStrEnh bereits ein $+ stehen hast.
    Der dort generierte String wird also an den obersten String des Stringstacks angefügt, was in deinem Fall wohl ein Minus/Plus aus irgendeinem IBIS-Skript ist.
    Du müsstest einfach das $+ dort entfernen und alles sollte wie gewünscht funktionieren.

    :)


    Grüße
    SchulterSack

  • Auch wenn ich das Problem durch testen eines anderen Schnipsels lösen konnte... Hier mal der Vergleich:


    Leicht modifiziert:

    Code
    1. "" (L.S.Time) 3600 / s0 trunc s1 "02" $IntToStrEnh $+ ":" $+ l0 l1 - 60 * "02" $IntToStrEnh $+ (S.$.Uhrzeit)


    Original aus dem IBIS Script:

    Code
    1. (L.S.Time) 3600 / s0 trunc s1 "02" $IntToStrEnh $+ ":" $+ l0 l1 - 60 * trunc "02" $IntToStrEnh $+ (S.$.Uhrzeit)


    Der Unterschied besteht ja nur darun, dass das zweite "trunc" weggelassen wurde und am Anfang zuerst ein leerer String erzeugt wird. Vielleicht macht das den Unterschied, vielleicht aber auch, dass das zweite trunc fehlt. Ich weiß es nicht genau. Müsste ich mal probieren. Mache ich später auch.


    Trotzdem danke. Ich werde es vielleicht auch mal versuchen das erste $+ wegzulassen. Vielleicht bringt das dasselbe Ergebnis.

    ?(

    Leider muss ich sagen, dass ich vorerst alle Projekte einstellen werde (Tholay, FranzBauers Objekte).
    Grund dafür: Die OMSI-Community. :(