- LiFePO4 Speicher Test         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Integer --> String, mit führenden Nullen

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    08.06.2005
    Ort
    Eisenach
    Alter
    36
    Beiträge
    47

    Integer --> String, mit führenden Nullen

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    ich habe schon wieder eine Frage an euch Experten.

    Da ich Probleme mit der Ausgabe von Integer-Werten auf einem LCD habe, bediene ich mich aktuell einer eher komplizierten Routine um führende Nullen mit anzuzeigen. Im einzelnen Frage ich meinen Ausgabewert auf seine Größe ab und setze dann individuell für jede "Länge" ein paar Nullen davor.
    So sieht das dann aus.
    Code:
       Locate 3 , 1
       Lcd "Attempts: "
    
       If Attemptsint <= 9 Then                        'display leading zeros
          Lcd "000"
       Elseif Attemptsint <= 99 Then
          Lcd "00"
       Elseif Attemptsint <= 999 Then
          Lcd "0"
       End If
    
       Lcd Attemptsint
    Gibt es da nun eine elegantere Lösung? Ich stelle mir irgendwas vor, was mir einen Integer-Wert in einen String mit bestimmter Länge schreibt und freie Zeichen vor dem eigentlichen Wert mit Nullen aufgefüllt werden.

    Schonmal Danke für eure Antworten.

    Grüße
    Elias

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Eine Möglichkeit für Führende Nullen ist es eine Konstante wie 10000 zu der Zahl zu addieren, und dann die Führende 1 beim String wieder zu entfernen. Man muß nur aufpassen das die Zahl nicht zu groß wird und ggf. auf den Long Datentyp ausweichen.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Eine Möglichkeit, die mir noch einfallen würde (wo ich aber jetzt nicht weiss, ob Bascom die kann bzw. ob sich da nicht unheimlich der Code aufbläht):

    Mit dem log10 kann man ja grob sagen, wie viele Stellen bzw. "folgende Nullen" eine Zahl hat. Also log10 berechnen und das Ergebnis auf die nächste ganze Zahl hochziehen.
    log10(100) = 2, nächste ganze Zahl = 3 => 3 Stellen
    log10(7483) = 3,874 => 4 => 4 Stellen.

    Damit könnte man dann die Anzahl der noch fehlenden Nullen vorne dran einfach ausrechnen.
    #ifndef MfG
    #define MfG

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Der logarithmus ist eine ausgesprochen langsame Funktion und braucht relativ viel Code. Den sollte man also wenn es irgend geht vermeiden.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.08.2004
    Ort
    Graz
    Beiträge
    342
    Einfacher und kürzer als 3 IF-Abfragen wirds wohl kaum gehen...

    mfg

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    08.06.2005
    Ort
    Eisenach
    Alter
    36
    Beiträge
    47
    Zitat Zitat von Netzman
    Einfacher und kürzer als 3 IF-Abfragen wirds wohl kaum gehen...

    mfg
    Das freut mich zu hören.
    Dachte schon man würde mich auslachen, weil ich das so "komisch" gelöst habe.


    Grüße
    Elias

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Bei der Einschränkung auf insges. 4 Stellen ohne Vorzeichen bist du, wie @Netzman sagte, mit "IF" wohl am besten dran.

    Für eine allgemeine Lösung:

    Umwandeln auf string (musst du ja sowieso)
    Länge string abfragen
    und dann z.B
    die differenz auf die gewünschten Stellen im Display mit "0" auffüllen
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    12.12.2004
    Ort
    Trier
    Beiträge
    38
    @PicNick
    Wenn ich schon die Zahl in eine Zeichenkette umwandle. Wieso dann nicht den FORMAT Befehl nutzen?
    Die Genialität einer Konstruktion liegt in ihrer Einfachheit. - Sergej P. Koroljow

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Bascom muss zur Laufzeit den format-string interpretieren, bis er weiss, was zu tun ist. Das gibt einigen Overhead.
    Wenn man das aber akzeptiert, hast du wahrscheinlich recht.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    12.12.2004
    Ort
    Trier
    Beiträge
    38
    @PicNick
    Es geht mir nicht ums "Rechthaben". Soll jeder machen wie er will, solange es funktioniert.
    Der TS fragte nach einer eleganten Möglichkeit und ich war lediglich über die gemachten Vorschläge etwas irritiert.
    Die Genialität einer Konstruktion liegt in ihrer Einfachheit. - Sergej P. Koroljow

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress