Quote by tbegle
Hallo Power User,
hat jemand eine möglichst einfache Methode wie man eine führende '06' einfügen kann?
möchte lenght möglichst vermeiden.
write(serout,bytetostr(06));
Hallo tbegle,
meinst Du jetzt, dass Du immer eine führende '0' haben möchtest?
Oder meinst Du, dass es immer 2 Stellen sein sollen und damit Zahlen die Kleiner als 10 sind eben mit einer 0 angeführt werden sollen?
Hast Du Dir mal das CompilerHandbuch 4.13.30.1 angeschaut?
Code
4.13.30.1 BYTETOSTR Konvertiert Numerischen 8bit Wert in einen String. Der Parameter kann eine ordinale numerische Konstante (Byte, Int8, Enum) oder eine Variable dieses Typs sein.
E-LAB Computers
System Library - Diverse System Funktionen - 133
Function ByteToStr (b : byte[Int8, Enum]) : string;
const st = '1234' + 'R' + #7 + ^L; var st1 : string[9]; bb : byte;
write (LCDout, ByteToStr (100));
write (SERout, ByteToStr (100:6)); {-> ' 100'}
bb:= 10;
st1:= ByteToStr (bb); { -> '10'}
st1:= ByteToStr (bb:6); { -> ' 10'}
st1:= ByteToStr (bb:6:1); { -> ' 1.0'}
st1:= ByteToStr (bb:6:1:'_'); { -> '___1.0'}
st1:= ByteToStr (bb:6:'_'); { -> '____10'}
Wenn es 2 Stellig mit führender Null sein soll, geht das nicht mit "bytetohex(x)", da hier eben Hexadezimal dargestellt wird. Also bei 10 eben 0A.
Der Compiler gibt Dir hier perfekte Formatierungsfunktionen, teste das folgende mal:
Code
bytetostr( <VAR/ByteWert>:<Ausgabelänge>:<Füllzeichen> );
bytetostr( 6:2:'0' ); { -> '06'}
Ich habe es so jetzt nicht mit Write() getestet, aber ich benutze das schon sehr lange um die Wertausgaben auf meinen Displays zu formatieren.
Achte aber auf Deinen Frame, die Konvertierungen brauchen etwas Framespeicher!
Gruß
Thorsten