M.V.GetTicketName auf bestimmte Zeichen überprüfen

Willkommen in der OMSI-WebDisk!
Als Gast kannst du nur Inhalte in deiner ausgewählten Sprache sehen. Registrierte Nutzer können die Sichtbarkeit anderer Sprachen in ihrem Kontrollzentrum aktivieren, weitere Infos hier.
Alle Themen sind in den Foren mit einer Sprachflagge gekennzeichnet: = Englisch [EN], = Deutsch [DE], = Französisch [FR]. Wenn du die angegebene Sprache nicht beherrschst, schreibe auf Englisch!
  • Hallo zusammen,


    ich hadere seid einiger Zeit mit dem Problem, das, z.B., auf Bremen das Ticketpack mit dem Zeichen "@" (was zum Zeilenumbruch genutzt wird)

    ausgestattet ist.


    Leider ist es ja so, das die weingsten Drucker das einfach so anzeigen können.

    Deshalb war meine Idee, diese Strings mit @ in einer verkleinerten Schriftform (damit sie auf den jeweiligen Button passen) darzustellen.


    Leider hab ich keinen Plan, wie ich aber das Zeichen "@" aus dem M.V.GetTicketName auslesen kann.


    Hat eventuell jemand eine Idee dazu?


    mfg

    Daniel

  • Es gibt viele Möglichkeiten...


    z.B.

    (M.V.GetTicketName) 1 $cutend 1 $SetLengthR "@" $= {if} 1 s0 {endif}

    (M.V.GetTicketName) 2 $cutend 1 $SetLengthR "@" $= {if} 2 s0 {endif}

    (M.V.GetTicketName) 3 $cutend 1 $SetLengthR "@" $= {if} 3 s0 {endif}

    (M.V.GetTicketName) 4 $cutend 1 $SetLengthR "@" $= {if} 4 s0 {endif}

    usw.


    l0 0 >

    {if}

    Was gemacht werden soll

    {endif}


    cooper

  • Danke Dir. :) Das teste ich morgen mal in Ruhe


    mfg

    Daniel


    @cooper


    Dein Lösungsansatz funktioniert einwandfrei :)

    Nur leider ist es, im nach hinein, beim Faremaster-Drucker nicht anwendbar, da Christian dort wohl beim zeichnen der Texttexturen wieder gezaubert hat und sich der neue Text mit verkleinerter Schriftart nicht richtig aufteilen lässt.


    Gibt es daher die Variante, das @ komplett aus dem String entfernen zu lassen? Leider stehen diese Zeichen ja auch nicht immer an der selben Stelle...


  • Gucke dir am besten das Krüger++ Matrix Script an, dort werden Großbuchstaben auf Kleinbuchstaben umgewandeln ({macro:Matrix_CapitalizeString}). Findest du am Ende des Script.

    Musst Du dir nur anpassen. Damit kannst du aus den @ ein Leerzeichen machen.

    Ich nutze diesen Scriptschnipsel für das tiefer setzen eines Zieltextes, bei bestimmte Buchstaben.


    cooper

  • Leider steig ich da 0 durch...Stringvariablen sind für mich leider (bisher) ein Buch mit drölftausend Siegeln :scold:


    Ich hab mir zwar im Wiki alles durchgelesen zum Thema Stringvariablen, aber verstanden hab ich das nicht wirklich...

    Gibts da irgendwo nen Crashkurs, den man absolvieren kann?


    mfg

    Daniel

  • Kurz gesagt Stringvariabel können Wörter und Werte speichern und wiedergeben. Dagegen können die anderen Variabeln nur Werte wiedergeben/speichern.

    Bisschen simpel erklärt, aber es trifft zu.


    Du musst deine Ticketnamen (M.V.GetTicketName) durch einen Filter jagen. Der Filter gibt dir neue Namen aus die in ein String gespeichert werden müssen. Damit diese Namen korrekt ausgegeben werden können.


    Dein Script würde so aussehen:

    Jetzt nur noch L.$.Ticketname mit den vorgesehenen String verbinden, damit diese ausgegeben werden können.

    Die Strings noch in die Stringvarlist eintragen.


    cooper

  • Da hätte ich noch 1-2 Fragen ;) :

    und wenn der Ticket_CapStr geschrieben wir, wo wird der in meinem Fall wieder ausgelesen??


    mfg

    Daniel

  • Die vielen (M.L.Ticket.....) sind sozusagen die einzelen Buchstaben. Nehmen wir Einzelfahrschein@Zone 1.

    In Ticket_CapStr wird immer wieder der einzelne Buchstabe übermittelt. Das heißt der String wird z.B. gefüllt mit "E" und geprüft ob ein "@" enthalten ist, wenn kein "@" enthalten ist, wird "E" wieder im String eingefügt. Irgendwann ist das "@" enthalten, daraus wird automatisch " ". Das macht der Macro Ticket_CapitalizeStringStep.{macro:Ticket_CharToLowerCase} gibt vor was gesucht bzw. ersetzt wird.


    Am Schluss wird an S.$.Ticketname nur noch "Einzelfahrschein Zone 1" weitergegeben.


    cooper

  • Ey das ist so Klasse :good:


    Das funktioniert, nach grossen anfänglichen Schwierigkeiten, total super.

    Vielen Dank für die Tipps und die super Erklärungen :)


    mfg

    Daniel


    Faremaster-Drucker mit Bremer Ticketpack :thumbup: