System.SysUtils.Format

Aus Appmethod Libraries
Wechseln zu: Navigation, Suche

Object Pascal

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, System::TVarRec const *Args, const int Args_High)/* overload */;

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 unter Format-Strings in diesem Thema.

Args ist ein Array mit Argumenten, die für die Formatbezeichner in Format angewendet werden. In C++ gibt Args_Size 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 werden landesspezifische Informationen im Parameter FormatSettings übergeben. Vor dem Aufruf dieser Form von Format müssen Sie den Parameter FormatSettings mit landesspezifischen Informationen füllen. Landesspezifische Standardinformationen können mit GetLocaleFormatSettings 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 ":"] ["-"] [Breite] ["." Genauigkeit] Typ

Jeder Formatbezeichner beginnt mit dem Zeichen %. Auf das Prozentzeichen folgen die folgenden Elemente (in der aufgeführten Reihenfolge):

  1. Ein optionaler Argumentindex-Bezeichner mit dem Offset Null (erstes Element hat den Index 0): [Index ":"].
  2. Eine optionale Angabe für die linksbündige Ausrichtung: <scode>["-"].
  3. Eine optionale Breitenangabe: [Breite].
  4. Eine optionale Genauigkeitsangabe: ["." Genauigkeit].
  5. Das Zeichen für den Konvertierungstyp: Typ.


In der folgenden Tabelle sind die möglichen Werte aufgeführt:


Wert Bedeutung

d

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.

u

Vorzeichenlose Dezimalzahl. Das Format u entspricht dem Format d, allerdings enthält der resultierende String kein Vorzeichen.

e

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.

f

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.

g

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.

n

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.

m

Währung. Das Argument muss ein Gleitkommawert sein. Der Wert wird in einen String umgewandelt, der einen Währungsbetrag darstellt. Die Steuerung der Konvertierung erfolgt mithilfe der globalen Variablen 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 bzw. in deren TFormatSettings-Entsprechung außer Kraft.

p

Zeiger. Das Argument muss ein Zeigerwert sein. Der Wert wird in einen String mit acht Zeichen, der den hexadezimalen Wert des Zeigers darstellt, konvertiert.

s

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.

x

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.

Siehe auch

Codebeispiele