-> Hier kostenlos registrieren
Hallo,
habe die Aufgabe Intergerwerte zwischen 0 und 9999 in eine Zeichenkette umzuwandeln. Dabei müssen Werte die weniger als 4 Stellen haben mit Nullen aufgefüllt warden.
Ich habe dafür zwar einen Weg gefunden, bin aber nicht ganz glücklich damit und hoffe, dass ihr eine "elegantere" Lösung kennt.
Unten findet ihr meine Lösung in SCL geschrieben. Falls es keine andere Lösung gibt, kann diese natürlich von anderen gerne weiterverwendet warden.
Gruß Hagen
habe die Aufgabe Intergerwerte zwischen 0 und 9999 in eine Zeichenkette umzuwandeln. Dabei müssen Werte die weniger als 4 Stellen haben mit Nullen aufgefüllt warden.
Ich habe dafür zwar einen Weg gefunden, bin aber nicht ganz glücklich damit und hoffe, dass ihr eine "elegantere" Lösung kennt.
Unten findet ihr meine Lösung in SCL geschrieben. Falls es keine andere Lösung gibt, kann diese natürlich von anderen gerne weiterverwendet warden.
Gruß Hagen
Code:
FUNCTION "FC_INT_STR" : STRING[4]
VAR_INPUT
INT_VALUE : INT ;
END_VAR
VAR_TEMP
// temporäre Variablen
TEMP : INT ;
TEMP2 : INT ;
STR_VALUE : STRING[4] ;
STRUCT_STR_VALUE AT STR_VALUE : STRUCT
MAX_LEN : BYTE ;
TOTAL_LEN : BYTE ;
CHARS : ARRAY[1..4] OF CHAR;
END_STRUCT ;
END_VAR
// Anweisungsteil
TEMP := INT_VALUE MOD 10 ;
STRUCT_STR_VALUE.CHARS[4] := STRING_TO_CHAR(MID (IN:= INT_TO_STRING(TEMP), L:= 1, P:= 2)) ; // (IN:= STR_DATARCV, L:= LENGTH_STR, P:= START_STR);
TEMP2 := INT_VALUE - TEMP ;
TEMP := (TEMP2 / 10 ) MOD 10 ;
STRUCT_STR_VALUE.CHARS[3] := STRING_TO_CHAR(MID (IN:= INT_TO_STRING(TEMP), L:= 1, P:= 2)) ;
TEMP2 := TEMP2 / 10 - TEMP ;
TEMP := (TEMP2 / 10 ) MOD 10 ;
STRUCT_STR_VALUE.CHARS[2] := STRING_TO_CHAR(MID (IN:= INT_TO_STRING(TEMP), L:= 1, P:= 2)) ;
TEMP2 := TEMP2 / 10 - TEMP ;
TEMP := (TEMP2 / 10 ) MOD 10 ;
STRUCT_STR_VALUE.CHARS[1] := STRING_TO_CHAR(MID (IN:= INT_TO_STRING(TEMP), L:= 1, P:= 2)) ;
TEMP2 := TEMP2 / 10 - TEMP ;
STRUCT_STR_VALUE.MAX_LEN := 4 ;
STRUCT_STR_VALUE.TOTAL_LEN := 4 ;
;
"FC_INT_STR" := STR_VALUE ;
END_FUNCTION