Printf
value Printf ( string strFormat, value Arg... );
Rückgabewert
Rückgabewert |
Beschreibung |
string |
Das Ergebnis der Formatierung. |
Parameter
strFormat
Die String nach dessen Muster die Parameter Arg formatiert werden sollen.
Die Platzhalter für die Parameter haben folgende allgemeine Form:
[%argid]%[flags][width][.precision]type (Parameter in eckigen Klammern sind optional)
argid wird dann notwendig, wenn Formatierungstexte mehrsprachig entwickelt werden und Parameter in den jeweiligen Landessprachen an unterschiedlichen Stellen des Ergebnistextes stehen sollen.
Printf (T"Heute ist der %02d.%02d.%04d", TimeGetDay(), TimeGetMonth(), TimeGetYear());
Die Übersetzung von T"Heute ist %02d.%02d.%04d" ins Englische ist "Today is %2%02d/%1%02d/%3%04d".
Die Schreibweise des Datums im Englischen ist Monat/Tag/Jahr. Da jedoch die Übergabeparameter Tag, Monat und Jahr sind, muss der englische Formatierungstext die Reihenfolge der Argumente ändern und %argid den Formatierungsplatzhaltern voranstellen "Today is "%2%02d/%1%02d/%3%04d".
Als flags sind möglich:
flags |
Beschreibung |
Beispiel |
Resultat |
- |
linksbündig |
"Weg %-10d km", 9232 |
"Weg 9232 km" |
+ |
bei positiven Werten '+' darstellen |
"Wert %+d", 218 |
"Wert +218" |
' ' |
bei positiven Werten ' ' darstellen |
"% d", 21 |
" 21" |
0 |
wenn width angegeben mit 0 auffüllen |
"%06d Stück", 2345 |
"002345 Stück" |
width steht als Platzhalter für die Mindestbreite der Formatierung. Wird ein Asterisk (*) als width angegeben, so wird der nächste Wert der Argumentenliste als Mindestbreite genommen.
Beispiel |
Resultat |
"%5d", 10 |
" 10" |
precision gibt die Anzahl der Nachkommastellen bzw. die maximale Anzahl Zeichen an. Wird ein Asterisk (*) als precision angegeben, so wird der nächste Wert der Argumentenliste als Anzahl der Nachkommastellen genommen.
Beispiel |
Resultat |
"%.2f", 10 |
"10.00" |
Als type sind zulässig:
type |
Beschreibung |
Beispiel |
Resultat |
d |
dezimal, vorzeichenbehaftet |
"%d, 872 |
"872" |
u |
dezimal, vorzeichenlos |
"Dezimal %05u", 453 |
"Dezimal 00453" |
b |
binär, vorzeichenlos |
"Binär %08b", 21 |
"Binär 00010101" |
o |
oktal |
"Oktal %03o", 37 |
"Oktal 025" |
x |
hexadezimal, vorzeichenlos mit a-f |
"Hexadezimal %04x", 763 |
"Hexadezimal 02fb" |
X |
hexadezimal, vorzeichenlos mit A-F |
"Hexadezimal %X", 763 |
"Hexadezimal 2FB" |
f |
Fließpunktzahl ([-]dddd.dddd) |
"Zahl %010.4f", 224.7 |
"Zahl 00224.7000" |
e |
Fließpunktzahl ([-]d.dddd) |
"Zahl %.3e", 54.2399 |
"Zahl 5.424e+001" |
c |
einzelnes Zeichen |
"Character %c", 72 |
"Character H" |
s |
Zeichenkette |
"String %s", "XYZ" |
"String XYZ" |
% |
Zeichen % |
"10 %%" |
"10 %" |
Bemerkung
Erzeugt einen String anhand einer Formatierungszeichenfolge. Das Ergebnis kann einer string Variablen zugeweisen, anderen Funktionen als Parameter übergeben oder direkt in einem Bauelement als Anzeigequelle eingetragen werden.
Beispiel
//z.B. in einem Text-/Wertanzeige Bauelement
Printf ("Der Druckwert ist: %3.2f bar", Pressure);
Ergibt z.B. bei numerische Variable Pressure = 23,418:
"Der Druckwert ist: 23,42 bar", wobei durch die Formatierung "3" vor dem Komma eine zusätzliche Leerstelle erzeugt wird.
Tip:
Zur Formatierung können auch
\r - zum Sprung an den Zeilenanfang
\n - zum Sprung in die nächste Zeile
\t - zum Einfügen eines Tabulators verwendet werden
Siehe auch MailSend, MessageBeep, MessageBox, PrintDirect, Random, ReportConfirm, Round, ShellExecute, Sleep, SpeakText, SysDatabaseDeleteAllReports, ThrowReports, ValueChanging, ValueConvertAD, ValueConvertDA, WinHelp