2.6 format
Um Strings in editierbaren Texten und Tablefields formatieren zu können, können Format-Ressourcen definiert werden.
Eine Format-Ressource verknüpft einen String als Formatbeschreibung mit einer optionalen Format-Funktion, die den String interpretiert.
Definition
{ export | reexport } format <Bezeichner> <formatSpec> | <variantDef>
formatSpec ::= <Format-String> [ <Format-Funktion> ] ;
variantDef ::= { 0 : <formatSpec> [ <Nummer> : <formatSpec> ] }
Wird keine Format-Funktion angegeben, wird der Format-String vom Dialog Manager intern behandelt. Wird eine Format-Funktion angegeben, muss diese als formatfunc definiert sein (siehe auch Kapitel „Format-Funktion“ im Handbuch „Regelsprache“).
Mit Hilfe von Varianten können z.B. Anpassungen an unterschiedliche Sprachen vorgenommen werden.
Bei der internen Behandlung des Formatstrings durch den Dialog Manager, sind folgende Formatbeschreibungen erlaubt:
Ist das Format ein Leerstring, werden die Eingabestrings nicht formatiert.
Die folgenden Zeichen stehen innerhalb des Formatstrings zur Verfügung:
A |
Alphabetische Zeichen |
C |
Ziffern und Großbuchstaben |
H |
Hexadezimalziffern |
N |
Ziffern |
U |
Alphabetische Zeichen, nur Großbuchstaben |
X |
beliebige Eingabe |
9 |
Ziffern (wie N) |
/ |
Formatierungszeichen |
, |
Formatierungszeichen |
. |
Formatierungszeichen |
- |
Formatierungszeichen |
: |
Formatierungszeichen |
Leerzeichen (Space) |
Formatierungszeichen |
Die Formatierungszeichen werden zur Darstellung und zur Eingabe in den Darstellungsstring eingefügt. Sie werden bei der Eingabe übersprungen und können daher nicht überschrieben werden. Sie werden nach der Eingabe nicht in den Inhaltsstring übernommen und sind dort nicht vorhanden.
Beispiel
Uhrzeiteingabe:
.format "NN:NN:NN";
Eingabe von 120300
Ergebnis "12:03:00"
Wenn der Formatstring mit einem S beginnt, wird der Inhaltsstring verdeckt dargestellt und editiert.
Das dem "S" folgende Zeichen wird als Spezialzeichen zur Verdeckung interpretiert. Folgt dem "S" kein weiteres Zeichen, wird als Verdeckungszeichen ein * gewählt. Danach sind Formatstrings der Form
möglich.
Mit der verdeckten Formatierung kann z.B. eine Passwort-Eingabe realisiert werden.
Beispiel
.format "SxAAA";
erlaubt die Eingabe von drei Buchstaben, die aber alle als "x" dargestellt werden.
Für die Formatierung von Zahlen, muss der Formatstring nach folgenden Schema aufgebaut werden:
% [<|>] [+|-] [ [0] 0] length [' [sepch] sepcount ] [ ( . | , ) [0] trail ]
[u|s] (b|d|f|h|o|x|X) [<|>] [+|-] [/(c[0]|p|t|z)+]
Bedeutung der verschiedenen Elemente
Anmerkungen
- Führende und anhängende Nullen werden nur in den Darstellungsstring eingefügt. Sie werden auch nach der Eingabe nicht in den Inhaltstring übernommen und sind somit dort nicht vorhanden.
- Bei einem einziffrigen Inhaltsstring steht die enthaltene Ziffer im formatierten String nicht notwendigerweise ganz rechts sondern kann auch die erste Ziffer links vom Komma sein, z.B. bei der technischen Zahleneingabe.
-
In einem Eingabefeld können Zeichen, die durch ein Format in den Darstellungsstring eingefügt werden, nicht mit der Rückschritt- bzw. Entfernen-Taste (BACKSPACE bzw. DEL) gelöscht werden.
Ein Vorzeichen, das durch ein Format eingefügt wird, kann durch Eingabe von + oder - geändert werden. Dabei schaltet + auf ein positives Vorzeichen um bzw. behält dieses bei. Dagegen schaltet - zwischen positivem und negativem Vorzeichen hin und her (wie eine Multiplikation mit -1).
Verfügbarkeit
Erlaubt ist ein Matching-Ausdruck in der Form "/ … /"
um so die Prüfung des Inhalts bzw. der Eingabe zu erlauben.
Passt der Inhalt nicht zum Muster, so wird ein Leerstring dargestellt bzw. die Eingabe unterbunden.
Beispiele
-
format FmtKommaZahl "/^(\\d+(\\.\\d*)?)?$/";
Erlaubte Strings z.B. "", "1", "07654.321"
-
format FmtHexZahl "/^[abcdefABCDEF0123456789]*$/";
Erlaubte Strings z.B. "", "AF4513c", "a", "7EF"
-
format FmtSpecial "/^([[:alpha:]]*\n\\d*\n[01]*)?$/";
Erlaubte Strings z.B. "", "Stadt\n999\n01", "Frankfurt\n60311\n01101110"
Siehe auch
Eingebaute Funktion regex() und Kapitel „PCRE-Bibliothek zur Unterstützung Regulärer Ausdrücke“.