Morgen!
Guck mal in der Hilfe unter den Begriffen "fusing" und "format".
Habe selber noch nicht so viel damit gearbeitet, denke aber dass man genau damit sowas realiesieren kann.
Marten83
Hi @ all,
Frage, wie kann ich eine Zahl die auf dem Display dargestellt werden soll an der "letzten" Stelle verankern?
Also so:
Total:----0 g/Min
Bis auf die Zahl die von 0 - 9999 geht, ist alles mit "locate" genau definiert. Ich möchte nun das die letzte Ziffer der Zahl "stehen" bleibt und sich die vorderen Stellen nach vorne verschieben.
Gruß
Morgen!
Guck mal in der Hilfe unter den Begriffen "fusing" und "format".
Habe selber noch nicht so viel damit gearbeitet, denke aber dass man genau damit sowas realiesieren kann.
Marten83
der Befehl " len() " hilft auch weiter denk ich.
Vor den Erfolg haben die Götter den Schweiß gesetzt
habe das mir mal angeschaut. Ich habe fusing und format bereits hergenommen. Damit kann ich das Format und die Rundung beeinflussen, aber nicht die position auf dem Display.
mit len() komm ich auch irgendwie net weiter.
Habs mal so gemacht, dass ich die "Länge" der Zahl, also die Anzahl der Stellen rausles mit LEN(), die wäre z.B. mal bei der Zahl 25 LEN = 2.
Wenn die Zahl nun 4 Stellen lang sein soll, dann müssen da davor 4 - LEN() Leerzeichen dazu, also 2 Stück. bei ner 3-stelligen Zahl nur noch 1 Leerzeichen (4-3=1).
Hm,
len() ist doch für Strings gedacht.
Nun, hab jetzt kein Bock das auszuprobieren, mein eigenes Projekt braucht genug Zuwendung (die letzten 2 Wochen jeden 2ten Tag bis Morgens 3-6Uhr geproggt oder Lyout erstellt) aber ich habe da eine Idee mit der ich so was zu C64-Zeiten gelöst habe. Sollte es einen Bascom-Befehl dazu geben würde ichs auch gerne wissen, aber so lange kannst Du Dir so helfen:
0-9? -> Cursor entsprechend setzen
10-99? -> Cursor entsprechend setzen
100-999? -> Cursor entsprechend setzen
1000-9999? -> Cursor entsprechend setzen
Gruß Dnerb
habs doch nun geschafft.
mit "format" gehts tatsächlich
Wird beim Befehl format automatisch an der letzten stelle verankert.
bei " x=(format y," ") werden Leerzeichen vorangestellt. Bascom ist so schlau das die Einerstelle gleich ganz hinten steht. Auch beim Befehl "locate" und "lcd"
supi
Was vitis wohl meint ist folgendes:Zitat von m@rkus33
Angenommen, die "letzte" Stelle ist Position 15 in der Zeile 1.
Dann holst du dir vor jedem Print die Länge des Strings, den du mit Fusing erzeugt hast, z.B. mit
b_gew_länge=len(s_Gewicht)
und setzt dies auf dem Display an die Position
b_pos_länge=16-b_gew_länge (16!, nicht 15), also
Locate b_pos_länge,1:lcd s_Gewicht
Hat Gewicht jetzt nur eine Stelle, wird es auf die Position 15 geschrieben, sind es drei Stellen, wird es auf 13-15 geschrieben, 15 bleibt also fix.
Dabei brauchst du nicht mehrere IFs um die Position herauszufinden.
Andererseits sollte
s_formatiert=Format(s_Gewicht, " ")
Locate 12,1:lcd s_formatiert
auch funktionieren, solange Gewicht nicht größer als 9999 wird.
Das ist in einem Befehl das, was Jaecko vorschlägt.
Gruß
Rolf
Hallo,
kann mir einer sagen was an meinem Formatbefehl falsch ist?! Also hinten mit den 2 Kommastellen funktioniert, aber vor dem komma funktioniert das nicht! Und wenn die Zahl jetzt noch negativ wird, kommt noch eine Stelle dazu und alles ist verrutsch....
Locate 2 , 11
Lcd + Fusing(yout_ms , "###.##") ; "m/s2"
Lesezeichen