Formatelemente
Für die Anweisungen String, MLString, Left, 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" |