System.SysUtils.Format
Delphi
function Format(const Format: string; const Args: array of const): string;
function Format(const Format: string; const Args: array of const; const AFormatSettings: TFormatSettings): string;
C++
extern DELPHI_PACKAGE System::UnicodeString __fastcall Format(const System::UnicodeString Format, const System::TVarRec *Args, const int Args_High)/* overload */;
Inhaltsverzeichnis
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
function | public | System.SysUtils.pas System.SysUtils.hpp |
System.SysUtils | System.SysUtils |
Beschreibung
Gibt einen mit Hilfe eines Format-Strings und einem Argument-Array formatierten String zurück.
Die Funktion Format formatiert die Argumente in einem offenen (untypisierten) Array.
Format
ist der Format-String. Weitere Informationen zu den verschiedenen Formatierungsmöglichkeiten finden Sie unterFormat-Strings in diesem Thema.
Args
ist ein Array mit Argumenten, die für die Formatbezeichner in Format angewendet werden. In C++ gibt Args_High
den Index des letzten Elements von Args
an (eins weniger als die Anzahl der Elemente).
Format gibt die Ergebnisse der Anwendung der Argumente in Args
für den Format-String Format
zurück.
Für Format stehen zwei Syntaxformen zur Verfügung. Die erste Form von Format ist nicht Thread-sicher, da landesspezifische Informationen aus globalen Variablen verwendet werden. Der Thread-sicheren zweiten Form von Format werden landesspezifische Informationen im Parameter AFormatSettings
übergeben. Vor dem Aufruf dieser Form von Format müssen Sie den Parameter AFormatSettings
mit landesspezifischen Informationen füllen. Landesspezifische Standardinformationen können mit AFormatSettings
zugewiesen werden.
Format-Strings
Mit Format-Strings werden Formate für allgemeine Formatierungsroutinen angegeben. Format-Strings, die an die String-Formatierungsroutinen übergeben werden, können zwei Arten von Objekten enthalten: literale Zeichen und Formatbezeichner. Literale Zeichen werden Wort für Wort in den resultierenden String kopiert. Formatbezeichner rufen Argumente aus der Argumentliste ab und weisen ihnen das Format zu.
Formatbezeichner werden in der folgenden Form angegeben:
"%" [index ":"] ["-"] [width] ["." prec] type
Jeder Formatbezeichner beginnt mit dem Zeichen %. Auf das Prozentzeichen folgen die folgenden Elemente (in der aufgeführten Reihenfolge):
- Ein optionaler Argumentindex-Bezeichner mit dem Offset Null (erstes Element hat den Index 0):
[Index ":"]
. - Eine optionale Angabe für die linksbündige Ausrichtung:
["-"]
. - Eine optionale Breitenangabe:
[width]
. - Eine optionale Genauigkeitsangabe:
["." prec]
. - Das Zeichen für den Konvertierungstyp:
type
.
In der folgenden Tabelle sind die möglichen Werte aufgeführt:
Wert | Bedeutung |
---|---|
|
Dezimal. Das Argument muss ein Integerwert sein. Der Wert wird in einen String umgewandelt, der aus Dezimalziffern besteht. Wenn der Format-String einen Bezeichner für die Genauigkeit enthält, muss der resultierende String mindestens die angegebene Anzahl von Stellen aufweisen. Enthält er weniger Stellen, wird der String auf der linken Seite mit Nullen aufgefüllt. |
|
Vorzeichenlose Dezimalzahl. Ähnlich zu |
|
Wissenschaftliche Notation. Das Argument muss ein Gleitkommawert sein. Der Wert wird in einen String der folgenden Form umgewandelt: "-d,ddd...E+ddd". Wenn es sich um eine negative Zahl handelt, beginnt der String mit einem Minuszeichen. Vor dem Dezimalkomma steht immer eine Ziffer. Die Gesamtanzahl der Stellen im resultierenden String (einschließlich der Ziffer vor dem Dezimalkomma) wird durch den Genauigkeitsbezeichner im Format-String festgelegt. Ist dieser nicht vorhanden, wird eine vorgegebene Genauigkeit von 15 Stellen angenommen. Auf den Exponenten "E" im String folgen immer ein Plus- oder Minuszeichen und mindestens drei Stellen. |
|
Fest. Das Argument muss ein Gleitkommawert sein. Der Wert wird in einen String der folgenden Form umgewandelt: "-ddd,ddd...". Wenn es sich um eine negative Zahl handelt, beginnt der String mit einem Minuszeichen. Die Anzahl der Stellen nach dem Dezimalkomma wird durch den Genauigkeitsbezeichner im Format-String festgelegt. Ist dieser nicht vorhanden, wird eine vorgegebene Genauigkeit von zwei Dezimalstellen verwendet. |
|
Allgemein. Das Argument muss ein Gleitkommawert sein. Der Wert wird unter Verwendung des Formats "Fest" oder "Wissenschaftliche Notation" in den kürzest möglichen Dezimal-String umgewandelt. Die Anzahl der signifikanten Stellen im resultierenden String wird durch den Genauigkeitsbezeichner im Format-String festgelegt. Ist dieser nicht vorhanden, wird eine vorgegebene Genauigkeit von 15 Stellen angenommen. Nachfolgende Nullen werden aus dem resultierenden String entfernt. Ein Dezimalkomma wird nur bei Bedarf angezeigt. Für den resultierenden String wird das Festkommaformat verwendet, wenn die Anzahl der Stellen vor dem Dezimalzeichen kleiner oder gleich der festgelegten Genauigkeit und der Wert größer oder gleich 0,00001 ist. In allen anderen Fällen wird die wissenschaftliche Notation verwendet. |
|
Zahl. Das Argument muss ein Gleitkommawert sein. Der Wert wird in einen String der folgenden Form umgewandelt: "-d.ddd.ddd,ddd...". Das Format n entspricht dem Format f, allerdings enthält der resultierende String Tausendertrennzeichen. |
|
Zahl. Das Argument muss ein Gleitkommawert sein. Der Wert wird in einen String der folgenden Form umgewandelt: "-d.ddd.ddd,ddd...". Das Format n entspricht dem Format f, allerdings enthält der resultierende String Tausendertrennzeichen. CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator, DecimalSeparator und CurrencyDecimals oder deren Entsprechungen in einer TFormatSettings-Datenstruktur. Enthält der Format-String einen Genauigkeitsbezeichner, setzt dieser den Wert in der globalen Variablen CurrencyDecimals global variable or its TFormatSettings equivalent. |
|
Zeiger. Das Argument muss ein Zeigerwert sein. Der Wert wird in einen String mit acht Zeichen, der den hexadezimalen Wert des Zeigers darstellt, konvertiert. |
|
String. Das Argument muss ein Zeichen, ein String oder ein PChar-Wert sein. Der String bzw. das Zeichen wird anstelle des Formatbezeichners eingefügt. Wenn im Format-String ein Genauigkeitsbezeichner angegeben ist, bestimmt er die maximale Länge des resultierenden Strings. Ist das Argument ein String, der diese Maximallänge überschreitet, wird der String abgeschnitten. |
|
Hexadezimal. Das Argument muss ein Integerwert sein. Der Wert wird in einen String umgewandelt, der aus hexadezimalen Ziffern besteht. Wenn der Format-String einen Bezeichner für die Genauigkeit enthält, muss der resultierende String mindestens die angegebene Anzahl von Stellen aufweisen. Enthält er weniger Stellen, wird der String auf der linken Seite mit Nullen aufgefüllt. |
Konvertierungszeichen können beliebig in Klein- oder Großschreibung angegeben werden.
Um das Zeichen % anzuzeigen (nicht, um einen Formatbezeichner zu beginnen), geben Sie %% ein. Beispiel:
Writeln(Format('%d%%', [100])); // displays '100%'
Bei allen Gleitkommaformaten wird das Zeichen für das Dezimal- bzw. das Tausendertrennzeichen aus den globalen Variablen DecimalSeparator
und ThousandSeparator
bzw. deren TFormatSettings-Entsprechungen ausgelesen.
Die Bezeichner für Index, Breite und Genauigkeit können direkt durch Angabe eines Strings mit Dezimalziffern (z.B. "%10d") oder indirekt mit Hilfe von Sternchen (z.B. "%*.*f") angegeben werden. Bei einem Sternchen wird das nächste Argument in der Argumentliste der zu verwendende Wert. Beachten Sie bitte, dass die Breite ein Integerwert und die Genauigkeit ein vorzeichenloser Integerwert ist. Zum Beispiel ist:
Format ('%*.*f', [8, 2, 123.456]);
gleichbedeutend mit:
Format ('%8.2f', [123.456]);
In C++ ist:
TVarRec args[3] = {8,2,123.456};
Format ("%*.*f", args, 2);
gleichbedeutend mit:
TVarRec args[1] = {123.456};
Format ("%8.2f", args, 0);
Der Breitenbezeichner legt die minimale Länge des Feldes für die Konvertierung fest. Ist der resultierende String kürzer als die minimale Feldlänge, wird er mit Leerzeichen aufgefüllt. Per Vorgabe werden die Leerzeichen vor dem Wert eingefügt, um eine rechtsbündige Ausrichtung zu erreichen. Enthält der Formatbezeichner jedoch einen Indikator für linksbündige Ausrichtung (vor dem Breitenbezeichner steht in diesem Fall ein Minuszeichen), werden die Leerzeichen nach dem Wert eingefügt und dieser linksbündig ausgerichtet.
Ein Indexbezeichner setzt den aktuellen Index der Argumentliste auf den angegebenen Wert. Der Index des ersten Arguments in der Liste hat den Wert 0. Durch die Verwendung von Indexbezeichnern kann dasselbe Argument mehrfach formatiert werden. Zum Beispiel: "Format('%d %d %0:d %1:d', [10, 20])" ergibt den String '10 20 10 20'.
Hinweis: Der Indexbezeichner wirkt sich auf die nachfolgende Formatierung aus. Format('%d %d %d %0:d %d', [1, 2, 3, 4]) gibt also '1 2 3 1 2', nicht '1 2 3 1 4' zurück. Um das letztere Ergebnis zu erhalten, müssen Sie Format('%d %d %d %0:d %3:d', [1, 2, 3, 4]) verwenden.