Gibt einen formatierten String zurück (ähnlich zu der C sprintf() Funktion).
StringFormat ( "format control", var1 [, ... var32] )
Parameter
| format control | Das Format und die Flags, die benutzt werden (siehe Bemerkungen). |
| var1...var32 | Bis zu 32 Variablen, die entsprechend dem "format control" ausgegeben werden. |
Rückgabewert
Gibt den formatierten String zurück, entsprechend zu "variable format", definiert in den "format control" Parametern.
Bemerkungen
Um einen zu großen Speicherverbrauch zu vermeiden, ist jede Variable auf 65535 Zeichen limitiert.| Typ | Variablen Typ | Ausgabeformat |
| d, i | Ganzzahl | Dezimale Ganzzahl mit Vorzeichen. |
| o | Integer | Oktale Ganzzahl ohne Vorzeichen. |
| u | Integer | Dezimale Ganzzahl ohne Vorzeichen. |
| x | Integer | Hexadezimal Ganzzahl (ohne VZ), Anwendung "abcdef". |
| X | Integer | Hexadezimal Ganzzahl (ohne VZ), Anwendung "ABCDEF". |
| e | Float | Wert mit Vorzeichen in der Form [ - ]d.dddd e [sign]ddd wobei d ein einzelnes dezimales Zeichen ist, dddd steht für ein oder mehrere dezimale Zeichen, ddd steht für genau drei dezimale Zeichen und sign (Vorzeichen) kann + oder - sein. |
| E | Float | Identisch zum e Format bis auf das E gegenüber e den Exponent einführt. |
| f | Float | Wert mit Vorzeichen in der Form [ - ]dddd.dddd, wobei dddd für ein oder mehrere dezimale Zeichen steht. Die Anzahl der Zeichen vor dem Dezimalpunkt ist abhängig von der Größenordnung der Zahl. Die Anzahl der Zeichen nach dem Dezimalpunkt ist abhängig von der verlangten Genauigkeit. |
| g | Float | Wert mit Vorzeichen ausgedruckt im f oder e Format, je nachdem welches Format für den gegebenen Wert und die erwartete Genauigkeit angemessener ist. Das e Format wird nur verwendet, wenn der Exponent des Werte weniger als -4 oder größer oder gleich dem Genauigkeitsargument ist. Nachfolgende Nullen werden abgeschnitten und der Dezimalpunkt erscheint nur, wenn ein oder mehrere Nachkommastellen folgen. |
| G | Float | Identisch zum g Format bis auf das E gegenüber e den Exponent einführt. |
| s | String | String. |
| Flag | Bedeutung | Vorgabe |
| - | Richtet das Ergebnis im gegebenen Feld links aus. | Rechtsbündig. |
| + | Stellt dem Ausgabewert ein Vorzeichen (+ oder -) vor, falls der Ausgabewertes von diesem Typ ist. | Vorzeichen erscheinen nur vor negativen Werten(-). |
| 0 | Wird width eine 0 vorangestellt werden Nullen addiert bis das Minimum der Weite erreicht ist. Kommen 0 und - vor, wird 0 ignoriert. Ist 0 spezifiziert mit einem Integer/Ganzzahl Format (i, u, x, X, o, d) wird 0 ignoriert. | Kein auffüllen. |
| Blank | Dem Ausgabewert wird ein Leerzeichen vorangestellt, wenn der Ausgabewert ein Vorzeichen enthält und positiv ist; Das Leerzeichen wird ignoriert, wenn das Leerzeichen und + flags erscheinen. | Kein Leerzeichen. |
| # | Benutzt mit dem o, x, oder X Format, der # Flag setzt jedem nicht Null Ausgabewert eine 0, 0x, oder 0X voran. | Keine Leerzeichen. |
| # | Benutzt mit dem e, E oder f Format, der # Flag zwingt den Ausgabewert in allen Fällen ein Dezimalpunkt zu enthalten. | Der Dezimalpunkt wird nur bei nachfolgenden Zeichen angezeigt. |
| # | Benutzt mit dem g oder G Format, der # Flag zwingt den Ausgabewert in allen Fällen einen Dezimalpunkt anzuzeigen und verhindert das Abschneiden von nachfolgenden Nullen. Wird ignoriert, wenn es mit c, d, i, u oder s benutzt wird. | Der Dezimalpunkt wird nur bei noch nachfolgenden Zeichen angezeigt. Nachfolgende Nullen werden abgeschnitten. |
| Typ | Bedeutung | Vorgabe |
| d, i, u, o, x, X | Der Genauigkeitswert legt die minimale Anzahl der Zeichen, die gedruckt werden sollen, fest. Wenn die Anzahl der Zeichen im Argument kleiner ist als die Genauigkeit, wird der Ausgabewert links mit Nullen aufgefüllt. Der Wert wird nicht abgeschnitten, wenn die Anzahl der Zeichen die Genauigkeit überschreitet. | Die Vorgabe für die Genauigkeit ist 1. |
| e, E | Der Genauigkeitswert legt die Anzahl der zu druckenden Nachkommastellen fest. Die letzte Nachkommastelle wird gerundet. | Der Vorgabewert ist 6. Ist die Genauigkeit 0 oder erscheint ein Punkt ohne Nachkommastellen, wird kein Dezimalpunkt gedruckt. |
| f | Der Genauigkeitswert legt die Anzahl der Nachkommastellen fest. Wenn ein Dezimalpunkt erscheint, ist mindestens ein Zeichen davor. Der Wert wird auf die entsprechende Anzahl von Zeichen gerundet. | Der Vorgabewert ist 6. Ist die Genauigkeit 0 oder erscheint ein Punkt ohne Nachkommastellen, wird kein Dezimalpunkt gedruckt. |
| g, G | Der Genauigkeitswert legt die maximale Anzahl signifikanter Zeichen, die gedruckt werden sollen, fest. | Sechs signifikante Zeichen werden gedruckt, wobei nachfolgende Nullen abgeschnitten werden. |
| s | Der Genauigkeitswert legt die maximale Anzahl der zu druckenden Zeichen fest. Zeichen, die dieses Limit übersteigen, werden nicht gedruckt. | Zeichen werden bis zum Auftreten eines Null-Zeichens gedruckt. |
Verwandte Funktionen
Keine.
Beispiel
#include <GuiConstantsEx.au3>
#include <Date.au3>
#include <WindowsConstants.au3>
Global $iMemo
Local $hGUI, $pFileTime1, $tFileTime1, $pFileTime2, $tFileTime2
; Erstellt die GUI
$hGUI = GUICreate("StringFormat", 250, 400)
$iMemo = GUICtrlCreateEdit("", 2, 2, 246, 396, $WS_VSCROLL)
GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
GUISetState()
$n = 43951789
$u = -43951789
; Folgendes ist zu beachten: Ein einzelnes % ist der Beginn einer Kombination aus Platzhalter und Formatcode (z.B. %d, %X, %.2f), der bei der Ausgabe durch die formatierte
; Variable ersetzt wird. Das doppelte Prozentzeichen %% im Formatstring gibt jedoch nur ein einzelnes % aus, d.h. '%%d' wird als '%d' ausgegeben.
;
printf("%%d = '%d'", $n); '43951789' standardmäßige Integerschreibweise
printf("%%e = '%e'", $n); '4.395179e+007' wissenschaftliche Schreibweise
printf("%%u = '%u'", $n); '43951789' vorzeichenlose Integerschreibweise eines positiven Integerwerts
printf("%%u <0 = '%u'", $u); '4251015507' vorzeichenlose Integerschreibweise eines negativen Integerwerts
printf("%%f = '%f'", $n); '43951789.000000' standardmäßige Gleitpunktschreibweise
printf("%%.2f = '%.2f'", $n); '43951789.00' Gleitpunktschreibweise mit 2 Stellen nach dem Dezimalpunkt
printf("%%o = '%o'", $n); '247523255' Darstellung als Oktalzahl
printf("%%s = '%s'", $n); '43951789' Darstellung als String
printf("%%#x = '%#x'", $n); '0x29ea6ad' Darstellung als Hexadezimalzahl mit Präfix in Kleinschreibung
printf("%%X = '%X'", $n); '29EA6AD' Darstellung als Hexadezimalzahl ohne Präfix und in Großschreibung
printf("%%+d = '%+d'", $n); '+43951789' Darstellung eines positiven Integerwerts bei erzwungenem Vorzeichen
printf("%%+d <0 = '%+d'", $u); '-43951789' Darstellung eines negativen Integerwerts bei erzwungenem Vorzeichen
printf()
$s = 'monkey';
printf("%%s = [%s]", $s); [monkey] standardmäßige Stringausgabe
printf("%%10s = [%10s]", $s); [ monkey] rechtsbündige Ausgabe von 10 Zeichen mit auffüllenden Leerzeichen
printf("%%-10s = [%-10s]", $s); [monkey ] linksbündige Ausgabe von 10 Zeichen mit auffüllenden Leerzeichen
printf("%%010s = [%010s]", $s); [0000monkey] Ausgabe mit führenden Nullen geht auch bei Strings
printf("%%10.4s = [%10.4s]", $s); [ monk] rechtsbündige Ausrichtung von 10 Zeichen, aber nur 4 Zeichen der Variablen werden verwendet
printf()
printf('Direkte Ausgabe (ohne printf):')
; Drei Beispiele der Verwendung von StringFormat ohne die Verwendung der lokalen Funktionen printf und MemoWrite:
GUICtrlSetData($iMemo, (StringFormat("%%d = '%d'", $u)) & @CRLF, 1)
MsgBox(0, "Ein Datum", StringFormat("%%02d.%%02d.%%04d = %02d.%02d.%04d", 28, 2, 2009))
ConsoleWrite(StringFormat("%%10.7s = [%10.7s]", "Konsolenausgabe"))
; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
Exit
; Formatstring und Variablen für die Ausgabe weiterleiten
Func printf($format = "", $var1 = "", $var2 = "", $var3 = "")
If $format = "" Then
MemoWrite("")
ElseIf $var1 = "" Then
MemoWrite($format)
ElseIf $var2 = "" Then
MemoWrite(StringFormat($format, $var1))
Else
MemoWrite(StringFormat($format, $var1, $var2, $var3))
EndIf
EndFunc ;==>printf
; Ausgabe einer Zeile in ein Memo-Control
Func MemoWrite($sMessage)
GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc ;==>MemoWrite