Format
Formatage d'une chaîne à partir de données multiples
Syntaxe
function Format(fmt: String; args: array of const): String
Remarques
L'utilisation des données du tableau dans la chaîne de format se fait en utilisant des spécificateurs de format.
Pour formater juste un nombre, on peut utiliser FormatFloat, FormatInteger.
Exemples
PrintLn(Format('%s, %s, %s !', ['ha', 'ho', 'hi'])); // ha, ho, hi !
// Les index de paramètres sont utiles si un paramètre revient plusieurs fois.
PrintLn(Format('%0:s, %0:s, %0:s !', ['ha', 'ho', 'hi'])); // ha, ha, ha !
// C'est aussi utile dans les chaînes à traduire, car l'ordre des mots peut changer en fonction des langues. Ex :
PrintLn(Format(_('Montant des %0:s de %1:s en %2:s : %3:.2f €'), ['achats', 'viande', FormatTranslateDateTime('mmmm yyyy', Date), 5000.0]));
// Amount of meat purchases in november 2018 : 5000,00 € => la chaîne traduite est 'Amount of %1:s %0:s in %2:s : %3:.2f'
Spécificateurs de format
Les chaînes de format transmises aux routines de définition de format de chaînes contiennent deux types d'objets : les caractères simples et les spécificateurs de format. Les caractères simples sont copiés tels quels dans la chaîne résultante. Les spécificateurs de format récupèrent les arguments dans la liste des arguments en y appliquant un format.
Les spécificateurs de format ont la forme suivante : "%" [index ":"] ["-"] [largeur] ["." prec] type
Un spécificateur de format commence par un caractère %. Ce qui suit % est, dans l'ordre:
- un spécificateur facultatif d'indice à base 0 de l'argument (le premier élément a l'indice 0), [index ":"]
- l'indicateur facultatif d'alignement à gauche, ["-"]
- le spécificateur facultatif de taille, [largeur]
- le spécificateur facultatif de précision, ["." prec]
- le caractère de type de conversion
| Caractère de type de format | Valeur |
|---|---|
| d | Décimal. L'argument doit être une valeur entière. La valeur est convertie en une chaîne de chiffres décimaux. Si la chaîne de format contient un spécificateur de précision, la chaîne résultante doit contenir au moins le nombre indiqué de chiffres ; si cela n'est pas le cas, des caractères zéro de remplissage sont rajoutés dans la partie gauche de la chaîne. |
| u | Décimal sans signe. Comme 'd' mais sans signe en sortie. |
| e | Scientifique. L'argument doit être une valeur flottante. La valeur est convertie en une chaîne de la forme "-d.ddd...E+ddd". La chaîne résultante débute par un signe moins si le nombre est négatif. Un chiffre précède toujours le séparateur décimal.Le nombre total de chiffres dans la chaîne résultante (y compris celui qui précède la virgule) est donné par le spécificateur de précision dans la chaîne de format. Si celui-ci est omis, une précision de 15 est prise en compte par défaut. Le caractère "E" dans la chaîne résultante est toujours suivi d'un signe plus ou moins, puis de trois chiffres au moins. |
| f | Fixe. L'argument doit être une valeur flottante. La valeur est convertie en une chaîne de la forme "-ddd.ddd...". La chaîne résultante débute par un signe moins si le nombre est négatif.Le nombre de chiffres après la virgule est fourni par le spécificateur de précision de la chaîne de format ; 2 décimales sont prises en compte par défaut si le spécificateur de précision est omis. |
| g | Général. L'argument doit être une valeur flottante. La valeur est convertie en une chaîne décimale la plus courte possible en utilisant le format fixe ou scientifique. Le nombre de chiffres significatifs dans la chaîne résultante est fourni par le spécificateur de précision dans la chaîne de format : une précision par défaut de 15 est prise en compte si le spécificateur de précision est omis.Les caractères zéro sont supprimés de la fin de la chaîne résultante et la virgule décimale n'apparaît que si elle est nécessaire. La chaîne résultante utilise le format fixe si le nombre de chiffres à gauche de la virgule est inférieur ou égal à la précision indiquée et si la valeur est supérieure ou égale à 0,00001. Sinon, la chaîne résultante fait appel au format scientifique. |
| n | Numérique L'argument doit être une valeur flottante. La valeur est convertie en une chaîne de la forme "-d,ddd,ddd.ddd...". Le format "n" correspond au format "f", sauf que la chaîne résultante contient le séparateur des milliers. |
| m | Monétaire. L'argument doit être une valeur flottante. La valeur est convertie en une chaîne représentant un montant monétaire. La conversion est contrôlée par les variables globales CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator, DecimalSeparator et CurrencyDecimals ou leur équivalent dans une structure de données TFormatSettings. Si la chaîne de format contient un spécificateur de précision, il remplace la valeur envoyée par la variable globale CurrencyDecimals ou son équivalent TFormatSettings. |
| p | Pointeur. L'argument doit être une valeur de type pointeur. La valeur est convertie en une chaîne de 8 caractères qui représente des valeurs de pointeur en hexadécimal. |
| s | Chaîne. L'argument doit être un caractère, une chaîne ou une valeur PChar. La chaîne ou le caractère est inséré à la place du spécificateur de format. Le spécificateur de précision, s'il est défini dans la chaîne de format, indique la taille maximale de la chaîne résultante. Si l'argument est une chaîne de taille supérieure, celle-ci est tronquée. |
| x | Hexadécimal. L'argument doit être une valeur entière. La valeur est convertie en une chaîne de chiffres hexadécimaux. Si la chaîne de format contient un spécificateur de précision, ce dernier spécifie que la chaîne doit contenir au moins le nombre indiqué de chiffres ; si cela n'est pas le cas, des caractères zéro de remplissage sont rajoutés dans la partie gauche de la chaîne. |