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:

Leerstring

Ist das Format ein Leerstring, werden die Eingabestrings nicht formatiert.

Eingabemuster

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"

Verdeckte Formatierung

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

  • Leerstring
  • Eingabemuster
  • numerisches Format

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.

Numerisches Format

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

Formatzeichen

Zeichen

Bedeutung

%

 

Einleitungszeichen zur Erkennung des numerischen Formats.

[<|>]

 

Ausrichtung am linken Rand:

 

keine Angabe

Auffüllen mit Leerzeichen vor dem Vorzeichen.

 

>

Auffüllen mit Leerzeichen zwischen Vorzeichen und Ziffern.

 

<

Kein Auffüllen, linksbündig.

[+|-]

 

Vorzeichen links:

 

keine Angabe

Darstellung nur negativer Vorzeichen, falls kein Vorzeichen rechts definiert ist.

 

-

Darstellung nur negativer Vorzeichen.

 

+

Darstellung positiver und negativer Vorzeichen.

[[0]0]

 

Darstellung führender Nullen:

 

keine Angabe

Es werden keine führenden Nullen dargestellt.

 

0

Einzelne führende Null wird dargestellt, falls Vorkommaanteil 0 ist.

 

00

Alle nicht belegten Vorkommastellen werden mit 0 dargestellt.

length

 

Anzahl aller Ziffernstellen (ohne Sonderzeichen).

[' [sepch] sepcount ]

 

An jeder sepcount-Stelle wird im Vorkomma-Anteil ein Zeichen (sepch oder ') dargestellt, (z.B. als Tausendermarkierung). Wird als sepcount 0 angegeben, wird der Standardwert 3 verwendet.

[(.|,) [0] trail]

 

Beschreibung des Nachkommaanteils:

Es wird entweder ein Punkt oder ein Komma als Dezimaltrennzeichen dargestellt.

 

 

trail gibt die Anzahl der Nachkommastellen an.

Bei Angabe einer vorangestellten 0 werden die nicht belegten Stellen mit 0 aufgefüllt. Dabei gilt, dass die Anzahl der Nachkommastellen kleiner sein muss als die Anzahl der Ziffernstellen (trail < length).

[u|s]

 

Eingabe negativer Zahlen:

 

u

unsigned, d.h. negative Zahlen sind nicht erlaubt.

 

s

signed, d.h. es sind auch negative Zahlen erlaubt.

(b|d|f|h|o|x|X)

 

Formatzeichen zur Festlegung des Zahlensystems:

 

b

Binärziffern.

 

d

Dezimalziffern.

 

f

Fließkommawerte mit Dezimaltrennzeichen im Eingabestring.

 

h

Entspricht x.

 

o

Oktalziffern.

 

x

Hexadezimalziffern (mit Kleinbuchstaben).

 

X

Hexadezimalziffern (mit Großbuchstaben).

 

 

Außer beim Formatzeichen f darf im Inhaltsstring kein Dezimaltrennzeichen enthalten sein. Dieses wird nur zur Darstellung und Eingabe in den Darstellungsstring eingefügt.

[<|>]

 

Ausrichtung am rechten Rand:

 

keine Angabe

Auffüllen mit Leerzeichen hinter dem Vorzeichen.

 

>

Kein Auffüllen, rechtsbündig.

 

<

Auffüllen mit Leerzeichen zwischen Vorzeichen und Ziffern.

[+|-]

 

Vorzeichen rechts:

 

keine Angabe

Keine Vorzeichendarstellung.

 

-

Darstellung nur negativer Vorzeichen.

 

+

Darstellung positiver und negativer Vorzeichen.

[/(c[0]|p|t|z)+]

 

Format-Modifikatoren:

 

 

Durch die Angabe von einem oder mehreren Modifikatoren kann das Verhalten des Formats beeinflusst werden.

Standardeinstellung:

Kaufmännische Zahleneingabe: die Ziffern werden bei der Eingabe über das Dezimaltrennzeichen hinweg geschoben. Leerstrings sind bei der Eingabe erlaubt und von Null verschieden. Das Dezimaltrennzeichen wird immer angezeigt - auch wenn der Inhalt ein Leerstring ist.

 

c

Ziffernlöschungs-Modus:

Löschen der letzten verbliebenen Ziffer aus einem String führt zu einem leeren String und nicht zu einem String mit dem Wert "0".

Der Modifikator hat keine Auswirkung, wenn er mit dem z-Format-Modifikator (Zero-Modus) kombiniert wird.

 

c0

0-Löschungs-Modus:

Wenn ein String nach einer Eingabe oder Löschung den Zahlenwert 0 repräsentiert, wird er durch einen leeren String ersetzt.

Im 0-Löschungs-Modus wird ein Inhaltsstring zum Leerstring, wenn nur eine Ziffer ungleich 0 vorhanden ist und diese Ziffer gelöscht wird (Beispiel: 7000,00 wird nach Löschen der 7 durch DEL oder BACKSPACE zum Leerstring).

Der Modifikator hat keine Auswirkung, wenn er mit dem z-Format-Modifikator (Zero-Modus) kombiniert wird.

 

p

Punkt-Modus: wenn der Inhalt ein Leerstring ist, wird kein Dezimaltrennzeichen angezeigt.

 

t

Technische Zahleneingabe: Vor- und Nachkommaanteil werden getrennt editiert.

 

z

Zero-Modus:

Leerstrings werden in Nullen umgewandelt, es können keine Leerstrings eingegeben werden, abhängig vom Format können Nullen eventuell als Leerstring angezeigt werden.

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).

Regulärer Ausdruck

Verfügbarkeit

Ab IDM-Version A.06.02.g

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“.