Sprintf

value Sprintf ( string BYREF strResult, string strFormat, value Arg.. );

Rückgabewert

Die Länge des Ergebnisstrings. Fehlt der Formatierungsstring strFormat oder ist dieser leer, so ist der Rückgabewert -1.

Parameter

strResult

Der String, an den die formatierte Zeichenkette übergeben wird.

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

 

argid wird dann notwendig, wenn Formatierungstexte mehrsprachig entwickelt werden müssen und Parameter in den jeweiligen Landessprachen an unterschiedlichen Stellen des Ergebnistextes stehen müssen.

Sprintf (str, T"Heute ist %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 die Übergabeparameter jedoch Tag, Monat und Jahr sind, muss der englische Formatierungstext die Reihenfolge der Argumente 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 %10d km", 2374

"Weg 9232       km"
"Weg       2374 km"

+

bei positiven Werten '+' darstellen

"Wert %+d", 218
"Wert %+d", -218

"Wert +218"
"Wert -218"

' '

bei positiven Werten ' ' darstellen

"% d", 21
"% d", -21

" 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 das nächste Wert der Argumentenliste als Mindestbreite genommen.
 

Beispiel

Resultat

"%5d", 10
"%05d", 4189
"%*d", 5, 72
"%0*d", 5, 329

"   10"
"04189"
"   72"
"00329"



precision gibt die Anzahl der Nachkommastellen bzw. die maximale Anzahl Zeichen an. Wird ein Asterisk (*) als precision angegeben, so wird das nächste Wert der Argumentenliste als Anzahl der Nachkommastellen genommen.
 

Beispiel

Resultat

"%.2f", 10
"%.*f", 3, 3.2723

"10.00"
"3.272"



Als type sind zulässig:

type

Beschreibung

Beispiel

Resultat

d

dezimal, vorzeichenbehaftet

"%d, 872
"%d", -872
"Dezimal %4d", 102
"Dezimal %4d", -102

"872"
"-872"
"Dezimal  102"
"Dezimal -102"

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 %.3f", 13.2348

"Zahl 00224.7000"
"Zahl 13.235"

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 %"

 

Arg..

Die Werte, welche an der Stelle der Platzhalter im Formatierungsstring eingesetzt werden.

Bemerkung

Formatiert die Parameter Arg nach dem bestimmten Muster strFormat und übergibt das Ergebnis an strResult. Das Muster in strFormat beschreibt genau, wo und wie die Parameter zu formatieren sind.

Beispiel

string str;

 

Sprintf (str, "%d + %d = %d = %02X", 3, 7, 10, 10);

 

Formatiert die Parameter entsprechend der Formatierungsanweisung und übergibt das Ergebnis an str. Das Ergebnis im obigen Beispiel ist 17 und der String str enthält den Text "3 + 7 = 10 = 0x0A".

Die Strings

Siehe auch StringCompare, StringCount, StringCompareNoCase, StringDelete, StringExtract, StringFind, StringFindOneOf, StringGetAt, StringGetLength, StringInsert, StringIsEmpty, StringLeft, StringMakeLower, StringMakeReverse, StringMakeUpper, StringMid, StringReplace, StringReverseFind, StringRight, StringSetAt, StringSpanExcluding, StringSpanIncluding, StringToValue, StringTrimLeft, StringTrimRight