Lade...
 

Formatelemente

Formatelemente

Für die Anweisungen String, MLStringLeft, Right, Mid und Truncate, kann im ersten Parameter eine Formatliste (als Zeichenkette) angegeben werden. Die Formatliste entspricht - mit einigen Einschränkungen - dem ersten Parameter der Funktion sprintf der C-Standardbibliothek.

Für Formatelemente der Form

         % (position) flags width .precision type 

werden an der entsprechenden Position Daten vom Stack eingefügt - wobei die Formatangabe die Konvertierung des Datenelements in die einzufügende Teilzeichenkette steuert.
Alle anderen Zeichen der Formatliste werden unverändert übernommen.

Hinweis: Für das Prozentzeichen % selbst muss %% geschrieben werden.

Ein Formatelement beginnt immer mit dem Zeichen % und mindestens einem Zeichen für den Datentyp. Die anderen Elemente (position, flags, width, precision) sind optional.

Typ-Zeichen eines Formatelements

Typ Wert von Stack wird konvertiert in Ergebnis
d ganze Zahl ganze Zahl (eventuell mit Vorzeichen)
i ganze Zahl ganze Zahl (eventuell mit Vorzeichen)
u ganze Zahl (Absolutwert) ganze Zahl (ohne Vorzeichen)
o ganze Zahl (Absolutwert) Zahl in Oktaldarstellung (ohne Vorzeichen)
x ganze Zahl (Absolutwert) Zahl in Hexadezimaldarstellung mit den Ziffern 0...9abcdef (ohne Vorzeichen)
X ganze Zahl (Absolutwert) Zahl in Hexadezimaldarstellung mit den Ziffern 0...9ABCDEF (ohne Vorzeichen)
s Zeichenkette Zeichenkette
f nicht unterstützt -
g nicht unterstützt -

position

Über die Angabe einer numerischen Position (bei 1 beginnend) kann das n-te Argument an diesen Platzhalter gebunden werden. Die Bindung zwischen Argument und Platzhalter erfolgt ohne Angabe der Postion aufsteigend (analog zur Zuordnung von Formaten zu Spalten in SetFormat). Durch die explizite Angabe können Argumente mehrfach in einem Formatstring referenziert werden oder Argumente übersprungen werden. In der SetFormat-Analogie entspricht die Position der expliziten COLUMN-Angabe.


Flags

Flag Bedeutung Standard
- linksbündig ausrichten rechtsbündig
+ Werte > 0 mit +-Vorzeichen nur Werte < 0 mit -
0 Feld mit 0 auffüllen mit Blank auffüllen
# Präfix für Oktal- und Hexadezimalzahlen ohne Präfix

width - Feldweite
ist eine nichtnegative Zahl und bestimmt die minimale Anzahl von Zeichen; d.h. die einzufügende Teilzeichenkette ist niemals kürzer. Gegebenenfalls werden Füllzeichen eingefügt - abhängig von den oben beschriebenen Flags (- und 0).
Die Länge der Teilzeichenkette kann mit Angabe einer Feldweite nicht beschränkt werden!

Statt einer Zahl kann das Zeichen * angegeben werden. Der Wert für die Feldweite wird dann ebenfalls vom Stack genommen.

precision
besteht aus dem Punkt . gefolgt von einer nichtnegative Zahl, welche die maximale Anzahl der Zeichen bestimmt. Im Gegensatz zur Angabe width wird hier die Länge der Teilzeichenkette beschränkt. Statt einer Zahl kann das Zeichen * angegeben werden. Der Wert für precision wird dann ebenfalls vom Stack genommen.

Bei den zur Zeit von InstantView® nicht unterstützten Typen f und g bestimmt precision die Anzahl der Dezimalstellen.


Beispiele:

InstantView®-Code Ergebnis
23 24 String("x=%d und y=%5d") "x=23 und y=   24"
23 String("x=%05d") "x=00023"
1 2 String("%d + %(1)d = %d") "1 + 1 = 2"
23 7 String("x=%0*d ") "x=0000023"
"abcde" String("%10s") "     abcde"
"abcde" String("%.10s") "abcde"
"abcde" String("%-10s") "abcde     "
"abcde" String("%010s") "00000abcde"
"abcdefgijkl..." String("%.5s") "abcde"
30 String("h=%x") "h=1e"
30 String("h=%X") "h=1E"
30 String("h=%#x") "h=0x1e"
CreateTransObject(CX_TIME) String("Zeit: %s", TF_SECONDS) "Zeit: 13.38.47"