Ankündigung

Einklappen
Keine Ankündigung bisher.

chr$()

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [Featurewunsch] chr$()

    Hat der eibPC eine Funktion, die als Parameter einen Wert nimmt und daraus ein Zeichen/String macht?

    Z.B. möchte ich eine Zeichenkette für sendtcparry() definieren:

    [highlight=epc]
    Request = "VOL UP" + chr$(10) + chr$(13)
    [/highlight]
    Eine Lösung hätte ich schon, über stringset(), nur verhält sich das etwas sonderbar (SPS mäßig?) und benötigt umständliche systemstart() und after(systemstart()) Konstrukte um einen konstanten String schließlich verfügbar zu machen.
    Benötige ich z.B. einen String schon bei Systemstart, muss ich dies per after() zeitlich verschieben, weil der String durch stringset() erst im nächsten Zyklus verfügbar ist.

    Zusätzlich könnte man diese Funktion natürlich jederzeit verwenden, wenn man schnell mal einen Zeichen erzeugen will. Die Lösung per stringset() kann hier ziemlich umständlich sein.

    Falls es also keine einfachere Lösung gibt, würde ich für die Funktion chr$() votieren , wie damals beim C64
    BR
    Marc

    #2
    Zitat von saft6luck Beitrag anzeigen
    Hat der eibPC eine Funktion, die als Parameter einen Wert nimmt und daraus ein Zeichen/String macht?
    Außer mit stringset geht da wohl derzeit nichts.

    Der umgekehrte Weg geht übrigens mit convert:
    x=convert($0x10$,0)
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Nach fast einem Jahr gibt es noch keine Lösung?

      Ist der Compiler wirklich solch ein Moloch, dass man sich für dieses doch ziemlich triviale Problem nicht ran traut?
      BR
      Marc

      Kommentar


        #4
        Zitat von saft6luck Beitrag anzeigen
        triviale Problem nicht ran traut?
        nee, liegt nicht am Moloach, sondern nur daran, dass wir extrem dumm sind...
        Will heißen.
        Ich schau mir das mal demnächst an, werde eh am Compiler arbeiten.
        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
        Enertex Produkte kaufen

        Kommentar


          #5
          Zitat von enertegus Beitrag anzeigen
          nee, liegt nicht am Moloach, sondern nur daran, dass wir extrem dumm sind...
          Mich nervt der * ganz gehörig!

          Beispiel?
          [highlight=epc]
          NewLine=$ $c2
          CRLF=$ $c3
          Grad=$$c2
          if systemstart() then {
          stringset(NewLine,13,0u16);
          stringset(CRLF,13,0u16);
          stringset(CRLF,10,1u16);
          stringset(Grad,176,0u16);
          } endif
          [/highlight]

          Obiges funktioniert. Ich hatte schon einmal gefragt, ob der String dann selbständig vergrößert wird, weil ich das nicht verstehe. Antwort war wohl, dass es eine eigene Längenangabe gibt.

          Und was steht dann drinnen in Grad? size(Grad) gibt 0, ganz toll. Wie passt das zu UTF-8 und warum kommt doch das Grad Zeichen bei raus?

          In der Anleitung steht natürlich nichts darüber, weder wie stringset() die Position im String berechnet, noch wie Strings im Speicher stehen. Ist es Zufall, wenn es funktioniert?

          Da frage ich mich tatsächlich, warum du für derart ungelenke Konstrukte nicht sofort alternative Kommandos einbaust, die dann auch Fehler vermeiden helfen.
          BR
          Marc

          Kommentar


            #6
            Den Featurewunsch würde ich noch gerne um einen Parameter für die Anzahl an Zeichen ergänzen, also z.B. chr(Zeichencode,Anzahl).

            Hintergrund sind die Initialisierung von "Arrays" und Stringformatierungen, die stringformat leider nicht kann.
            BR
            Marc

            Kommentar


              #7
              Zitat von saft6luck Beitrag anzeigen
              Den Featurewunsch würde ich noch gerne um einen Parameter für die Anzahl an Zeichen ergänzen, also z.B. chr(Zeichencode,Anzahl).
              Ich hab das mal wie folgt im Compiler realisiert:
              x=tostring(12,10,12)
              wobei die Funktion tostring() nur Bytes annimmt, dafür aber beliebig viele Argumente haben darf.
              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
              Enertex Produkte kaufen

              Kommentar

              Lädt...
              X