Einheitleiche Darstellung von Ganzzahlen (INT) als String

Moderator: messtronik

Antworten
messtronik
Beiträge: 58
Registriert: Mo Feb 22, 2021 6:12 pm

Einheitleiche Darstellung von Ganzzahlen (INT) als String

Beitrag von messtronik »

Schaut mal,

ich möchte Euch ein DMIS Macro zur Verfügung stellen, um Ganzzahlen sauber darzustellen.
Wann brauchst Du das? Na zum Beispiel wenn Dateinamen schön aufsteigend erstellt werden sollen.
Damit auch die Sortierung sauber funktioniert. (1,10,2,4.. besser 01,02,..,10)

Idee war zum Bsp. die Schleifenvariable $L1 sauber zu formatieren
LET / $L1 = 1
CALL / SETDIGIT, '$L1', '3', ''
$$ ergibt ein Stringvariable mit dem Namen $SETDIGIT 001
TEXT / OUTPUT, $SETDIGIT
$$ alternative Verwendung, mit alternativem Zeichen anstelle von '0':
CALL / SETDIGIT, '$L1', '3', 'x'
$$ ergibt xx1

WW_SetDigit.jpg
WW_SetDigit.jpg (56.01 KiB) 38430 mal betrachtet
Viele Spaß damit

$$Hier der Code, erstelle Dir eine Datei:
BEGIN / CHFILE
TYPE = MACRO
END / CHFILE

MACRO / SETDIGIT, Variable, Anzahl Stellen, opt. Zeichen
$$ Ergänzen eines String um vorangestellte Nullen
$$ JW - Messtronik
$$ Sep. 2022 - Sonntag 10:37 Uhr - Mofarennen Fischbach, LA Platz 8

$$ Ergebnis als Funktion
DECL / GLOBAL, CHAR, SETDIGIT
DECL / LOCAL, INT, TestINT, Digits, i, anz
DECL / LOCAL, CHAR, buffer, zeichen, vorher

$$ Variablen einlesen
LET / $vorher =$CALLARG[0]
LET / $Digits =$CALLARG[1]
LET / $zeichen =$CALLARG[2]
LET / $SETDIGIT = $vorher
LET / $buffer = ''
$$ welches Zeichen soll ergänzt werden? Default '0'
LET / $TestINT = STRLEN($zeichen)
IF / ($TestINT=0), THEN, LET / $zeichen ='0'

$$ Länge des Strings bisher
LET / $TestINT = STRLEN($vorher)
IF / ($Digits>$TestINT), (WEITER), (ENDE)
(WEITER)
LET / $anz = $Digits - $TestINT
FOR / $i = 1, TO, $anz
LET / $buffer = '$buffer$zeichen'
NEXT / $i
LET / $SETDIGIT = '$buffer$vorher'
(ENDE)

ENDMAC
ENDFIL

$$ Wer weiß nicht, wie ein Macro eingebunden wird? (INCLUDE) - gern melden
Antworten