Format (rtl)
Ligne 22 : | Ligne 22 : | ||
Un spécificateur de format commence par un caractère %. Ce qui suit % est, dans l'ordre: | Un spécificateur de format commence par un caractère %. Ce qui suit % est, dans l'ordre: | ||
− | Le spécificateur facultatif d'indice de l'argument, [index ":"] | + | *Le spécificateur facultatif d'indice de l'argument, [index ":"] |
− | L'indicateur facultatif d'alignement à gauche, ["-"] | + | *L'indicateur facultatif d'alignement à gauche, ["-"] |
− | Le spécificateur facultatif de taille, [width] | + | *Le spécificateur facultatif de taille, [width] |
− | Le spécificateur facultatif de précision, ["." prec] | + | *Le spécificateur facultatif de précision, ["." prec] |
− | Le caractère de type de conversion, type | + | *Le caractère de type de conversion, type |
Le tableau suivant résume les valeurs possibles de type: | Le tableau suivant résume les valeurs possibles de type: | ||
− | + | * 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 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 le séparateur décimal n'apparaît que s'il 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 sc | |
− | + | * 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, toutes ces variables étant initialisées à partir de la section International du Panneau de configuration Windows. Si la chaîne de format contient un spécificateur de précision, il remplace la valeur envoyée par la variable globale CurrencyDecimals. | |
− | + | * 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. | |
Les caractères de conversion peuvent être indiqués indifféremment en majuscules ou en minuscules: le résultat obtenu est le même. | Les caractères de conversion peuvent être indiqués indifféremment en majuscules ou en minuscules: le résultat obtenu est le même. | ||
Ligne 59 : | Ligne 59 : | ||
Format('%8.2f', [123.456]). | Format('%8.2f', [123.456]). | ||
− | |||
Un spécificateur de taille définit la taille minimale du champ lors de la conversion. Si la chaîne résultante est de taille inférieure à la taille minimum définie, elle est comblée par des espaces afin d'accroître la taille du champ. Par défaut, le résultat est aligné à droite en ajoutant en faisant précéder la valeur d'espaces, mais si le spécificateur de format contient un indicateur d'alignement à gauche (un caractère "-" précédant le spécificateur de taille), le résultat est aligné à gauche par l'ajout d'espaces après la valeur. | Un spécificateur de taille définit la taille minimale du champ lors de la conversion. Si la chaîne résultante est de taille inférieure à la taille minimum définie, elle est comblée par des espaces afin d'accroître la taille du champ. Par défaut, le résultat est aligné à droite en ajoutant en faisant précéder la valeur d'espaces, mais si le spécificateur de format contient un indicateur d'alignement à gauche (un caractère "-" précédant le spécificateur de taille), le résultat est aligné à gauche par l'ajout d'espaces après la valeur. | ||
Ligne 68 : | Ligne 67 : | ||
<source lang='delphi'> | <source lang='delphi'> | ||
+ | procedure foo(const s:string); | ||
begin | begin | ||
+ | showMessage(Format(_TP('Cette procédure affiche la chaîne %s'),[s])); | ||
end; | end; | ||
</source> | </source> | ||
Ligne 76 : | Ligne 77 : | ||
{{Footer|Développement DSM}} | {{Footer|Développement DSM}} | ||
[[category:RTL Conversion]] | [[category:RTL Conversion]] | ||
− |
Version actuelle en date du 11 août 2009 à 16:13
Function Format(const Format:String; iArgs:Variants):String;
Cette fonction définit le format d'une série d'arguments du tableau Args.
Result | Chaîne formatée. |
Format | Format de conversion. |
iArgs | Arguments de conversion. |
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 ":"] ["-"] [width] ["." prec] type
Un spécificateur de format commence par un caractère %. Ce qui suit % est, dans l'ordre:
- Le spécificateur facultatif d'indice de l'argument, [index ":"]
- L'indicateur facultatif d'alignement à gauche, ["-"]
- Le spécificateur facultatif de taille, [width]
- Le spécificateur facultatif de précision, ["." prec]
- Le caractère de type de conversion, type
Le tableau suivant résume les valeurs possibles de type:
- 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 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 le séparateur décimal n'apparaît que s'il 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 sc
- 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, toutes ces variables étant initialisées à partir de la section International du Panneau de configuration Windows. Si la chaîne de format contient un spécificateur de précision, il remplace la valeur envoyée par la variable globale CurrencyDecimals.
- 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.
Les caractères de conversion peuvent être indiqués indifféremment en majuscules ou en minuscules: le résultat obtenu est le même. Quel que soit le format flottant, les deux caractères utilisés comme séparateur décimal et séparateur des milliers sont respectivement définis par les variables globales DecimalSeparator et ThousandSeparator. Les spécificateurs d'indice, de taille et de précision peuvent être directement spécifiés en utilisant des chaînes contenant des chiffres décimaux (par exemple "%10d") ou indirectement, en utilisant le caractère astérisque (par exemple "%*.*f"). Lorsque vous utilisez l'astérisque, l'argument suivant dans la liste (qui doit être obligatoirement une valeur entière) devient la valeur effectivement utilisée. Par exemple,
Format('%*.*f', [8, 2, 123.456])
équivaut à
Format('%8.2f', [123.456]).
Un spécificateur de taille définit la taille minimale du champ lors de la conversion. Si la chaîne résultante est de taille inférieure à la taille minimum définie, elle est comblée par des espaces afin d'accroître la taille du champ. Par défaut, le résultat est aligné à droite en ajoutant en faisant précéder la valeur d'espaces, mais si le spécificateur de format contient un indicateur d'alignement à gauche (un caractère "-" précédant le spécificateur de taille), le résultat est aligné à gauche par l'ajout d'espaces après la valeur.
Un spécificateur d'indice définit la valeur courante de l'indice de la liste. L'indice du premier argument de la liste est 0. A l'aide du spécificateur d'indice, vous pouvez formater un même argument plusieurs fois de suite. Par exemple "Format('%d %d %0:d %1:d', [10, 20])" produit la chaîne '10 20 10 20'.
Exemple
procedure foo(const s:string); begin showMessage(Format(_TP('Cette procédure affiche la chaîne %s'),[s])); end;
Voir aussi: