- Offizieller Beitrag
Hallo,
Heute mal ein kleines Anliegen von mir.
Eine der Funktionen, die man am Anfang nicht versteht und die sich dann später als sehr nützlich herausstellen :).
Es geht um die Funktion
[autoit]StringFormat
[/autoit].
Die Hilfe sagt dazu:
Zitat von Deutsche Hilfe 3.3.0.0Alles anzeigenStringFormat
Gibt eine formatierte Zeichenfolge 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 die formatierte Zeichenfolge zurück, entsprechend zu "variable format", definiert in den "format control" Parametern.
(Online: https://autoit.de/dokumentation_…tringFormat.htm)
Was tut die Funktion nun konkret?
Nehmen wir an, wir haben die folgende Ausgabe, die in einer MsgBox oder sonst irgendwo im Programm erscheint:
[autoit]"Es wurden " & $i & " Fehler gefunden, die auf die Funktion " & $funktionsname & " zurückzuführen waren"
[/autoit]
Dieses Konstrukt hat mehrere Nachteile:
1. Schlechte Lesbarkeit
2. Anfällige Setzung der Spezialzeichen " und &
3. Schlechte Übersetzbarkeit
Der dritte Punkt wird klar, wenn wir es ins Englische bringen:
[autoit]"The function " & $funktionsname & " caused " & $i & " errors."
[/autoit]
Die Reihenfolge der Parameter kann sich ändern, die Teilzeichenketten enthalten in aller Regel verschiedene Satzanteile und es ist wesentlich schwerer aus kleinen Fetzen korrekte Übersetzungen zu bauen, wenn man nur die Teilstrings bekommt.
Die Funktion StringFormat hilft uns gegen alle drei Nachteile von oben. Das Konstrukt sieht damit wie folgt aus:
[autoit]StringFormat("Es wurden %i Fehler gefunden, die auf die Funktion %s zurückzuführen waren", $i, $funktionsname)
[/autoit]
Dabei entsteht genau die gleiche Ausgabe wie vorher allerdings besser wartbar. Der Text ist zusammenhängend und es werden nur an die kodierten Stellen die Variablen eingefügt.
Eine Konstruktion wie
StringFormat('Der Satz "%s" war korrekt.', $satz)
[/autoit]
werden deutlich vereinfacht, weil die Setzung der Anführungsstriche übersichtlicher wird.
Die Variablen (beginnend mit %, %% für ein wirkliches Prozentzeichen) werden in der Reihenfolge ihres Auftretens mit den Variablenwerten der weiteren Parameter ersetzt.
Ein weiteres Anwendungsgebiet sind Umformatierungen von Zahlen, z.B.
[autoit]StringFormat("Du lagst zu %.2f %% richtig.", 4.643)
[/autoit].
Weitere Beispiele dazu gibt es in der Hilfe, im Wesentlichen bestimmt die 2 die Zahl der Nachkommastellen und %03.2f führt zu genau 3 Stellen vor dem Komma, die mit Nullen aufgefüllt werden, falls nötig.
peethebee