Programmierung

Führende Nullen – Formatierung von Strings

Ich wurde in letzter Zeit immer mal wieder danach gefragt, wie man denn führende Nullen in einem (numerischen) Eingabefeld darstellen kann.



Diese Option ist in der Tat bei manchen Anwendungen unerlässlich, so sind bestimmte Bestellnummern oder Ersatzteilnummern häufig mit führenden Nullen abgespeichert, und dienen so der Identifikation.
Wie kann ich diese Werte nun aber in CONZEPT 16 nachstellen? Ganz einfach, mit einem alphanumerischen Edit Objekt. Das hat zudem den Vorteil, das ich auch bestimmte ‚Eingabemasken‘ definieren kann. So zum Beispiel, das an einer bestimmten Stelle ein Bindestrich vorgegeben ist, oder nur ein begrenzter Zahlenbereich zugelassen ist etc.

Um zum Beispiel eine Bestellnummer in der Form 0146-484-95 darzustellen, wird die Eigenschaft wpEditMask auf folgenden Wert gesetzt: %4*n-%3*n-%2*n. Der eingegebene Wert kann als Int-Wert (14.648.495) in der Datenbank abgelegt werden. Um diesen wieder in diese Form zu bringen, sind folgende Operationen notwendig:

// Von der hintersten zur vordersten Position nach einander ermitteln
tPos3 # Val % 1000;
tPos2 # Val DIV 1000 % 100;
tPos1 # Val DIV 1000 DIV 100;

$Edit->wpCaption # CnvAI(tPos1, _FmtNumLeadZero | _FmtNumNoGroup, 0, 4) + '-' + CnvAI(tPos2, _FmtNumLeadZero | _FmtNumNoGroup, 0, 2) + '-' + CnvAI(tPos3, _FmtNumLeadZero | _FmtNumNoGroup, 0, 3);

Weitere Informationen zu Eingabemasken finden Sie in der aktuellen CONZEPT 16-Dokumentation.

2 Kommentare

2 Kommentare “Führende Nullen – Formatierung von Strings”

  1. Die Lösung hier ist mehr als Workaround zu sehen. Wir haben für eine der nächsten Versionen eine entsprechende Erweiterung in den betroffenen Eingabe-Objekten geplant. Es wird dann eine Option z.B. bei der Eigenschaft FmtIntFlags geben (_FmtNumLeadZero).

  2. Scheint mir aber eine sehr umständliche Methode um z.B. eine 5-stellige Zahl mit Vornullen darzustellen, wenn Ich jedesmal Init- und Term-Ereignisse brauche um den Wert anzuzeigen oder abzufragen

Kommentar abgeben