TIA Führende Nullstellen in Siemens VB-Script

K13

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,
hatte heute ein Problem beim Erstellen eines Strings, in dem eine Seriennummer mit führenden Nullstellen dargestellt werden soll.
Ich wollte an dieser Stelle meine Lösung teilen.

Code:
Dim myint, temp, mystring
myint = Len("meine Variable")   'liefert die Länge der Nummer
temp = String(8-myint,"0")        ' liefert die führenden Nullen

mystring = temp & myint

Das Ergebnis sieht dann so aus:
"00000007"
Gibt möglicherweise noch elegantere Lösungen aber diese hat für mich funktioniert.
Hatte selbst beim Suchen nichts gefunden und dachte ich könnte das Thema mal ergänzen.
 
Zuletzt bearbeitet von einem Moderator:
Nicht getestet, nur aus dem Kopf geschrieben:

Code:
Dim mystring
mystring = Right((100000000 + MyVar),8)

Oder:

Code:
Dim mystring
mystring = Right("00000000" & MyVar,8)
 
Und spasseshalber noch 'ne Variante:
Code:
Zahl = 1234
Text = "00000000"                 ' Text = String(8, 48)
Mid(Text, 9 - Len(Zahl)) = Zahl   ' Mid(Text, Len(Text) + 1 - Len(Zahl)) = Zahl
Lehnt sich stark an die Variante aus #1 an [string(AnzahlZeichen, Zeichen)], aber nicht mit variabler Länge, sondern mit fixer Länge, da hier zunächst ein String in der gewünschten Länge, bestehend aus lauter vorlaufenden Nullen, gebildet wird.
Anschliessend wird davon Gebrauch gemacht, dass in manchen BASICs die Funktion 'MID' (als einzige!) durchaus auch schon mal auf der linken Seite einer Zuweisung benutzt werden darf! In VBA geht es. Ob dies auch in VBS funktioniert, habe ich nicht getestet.
In Zeiten, als GarbageCollection bei BASIC ein durchaus ernstzunehmendes Thema war, habe ich gerne "MID links von =" benutzt, weil man dadurch dem BASIC ersparen konnte, bei einer solchen Zuweisung wieder einen neuen Speicherplatz für das Ergebnis zu suchen und zu belegen.

Ganz ohne Tücken sind alle Varianten nicht.
- Sinnvoll ist nur die Umwandlung positiver Zahlen
- die Varianten, die die Differenz zwischen der Länge des gewünschten Ergebnisses und der Anzahl Stellen der Zahl bilden, setzen voraus, dass die Differenz nicht negativ wird
- die Variante, die eine 1 gefolgt von der gewünschten Anzahl Nullen draufaddiert, setzt voraus, dass kein Überlauf bei der Addition auftritt (eher bei SCL bzw. ST ein Thema, z.B. in DINT rechnen, wenn die Zahl ein INT ist)
- die Variante, die einen String von vorlaufenden Nullen voranstellt, um dann rechtsbündig die gewünschte Anzahl Stellen abzuschneiden, setzt voraus, dass die Zahl nicht zu viele Stellen hat.
Eine weitere Tücke wurde noch gar nicht angeschnitten: kommt man auf die Idee, die Zahl mit STR(Zahl) umzuwandeln, so wird vor der Zahl ein störendes Leerzeichen erzeugt, nämlich als Platzhalter für das positive Vorzeichen.

Je nach Anwendung und ProgrammierSprache sollte man sich schon überlegen, wo die Grenzen liegen.
 
Zurück
Oben