格式字符串参数

传递到字符串格式设置例程的格式字符串包含两种类型的对象 - 文字字符和格式指定符。文字字符会逐字复制到生成的字符串。格式指定符从指定的属性获取属性值,并对其应用格式设置。格式字符串中只能存在一个指定符。

格式指定符采用以下形式:

"%"["-"][width]["."prec]type

表 11-1 格式字符串字符

字符 说明

%

指示格式指定符的开始

["—"]

左对齐指示符(可选)

通过在值后面添加空格来左对齐结果。默认情况下,通过在值的前面添加空格来右对齐结果。

[width]

宽度指定符(可选)

设置转换的最小字段宽度。如果生成的字符串小于最小字段宽度,则会添加空格以增加字段宽度。

["." prec]

精度指定符(可选)

type

转换类型字符

转换字符可以使用大写或小写进行指定。对于所有的浮点格式,用作小数和千位分隔符的实际字符通过 DecimalSeparator 和 ThousandSeparator 全局变量或它们的 TFormatSettings 等效项获取。下表中列出了类型的有效值。

表 11-2 格式字符串类型值

类型值 说明

d

十进制

属性值必须为整数。将值转换为十进制数字字符串。如果格式字符串包含精度指定符,则其指示生成的字符串必须至少包含指定的位数;如果值少于指定的位数,则生成的字符串会在左边添加零。

u

无符号的十进制

类似于 d,但是不输出符号。

e

科学记数法

属性值必须为浮点值。将值转换为 "-d.ddd...E+ddd" 格式的字符串。如果数字为负数,则生成的字符串以减号开头。小数点前面始终有一位数字。生成字符串中的总位数(包括小数点前面的一位)由格式字符串中的精度指定符指定;如果没有精度指定符,则使用默认精度 15。生成的字符串中的 "E" 指数字符后面始终跟有一个加号或减号以及至少三位数字。

f

固定

属性值必须为浮点值。将值转换为 "-ddd.ddd..." 格式的字符串。如果数字为负数,则生成的字符串以减号开头。小数点后面的位数由格式字符串中的精度指定符指定;如果没有精度指定符,则使用默认的两位十进制数字。

g

常规

属性值必须为浮点值。使用固定或科学记数法格式将值转换为尽可能最短的十进制字符串。生成的字符串中的有效数字位数由格式字符串中的精度指定符指定;如果没有精度指定符,则使用默认精度 15。将删除生成的字符串尾部的零,并且仅在需要时显示小数点。如果值中小数点左边的数字位数小于或等于指定的精度,并且值大于或等于 0.00001,那么生成的字符串使用固定点格式。否则,生成的字符串使用科学记数法格式。

n

数字

属性值必须为浮点值。将值转换为 "-d,ddd,ddd.ddd..." 格式的字符串。"n" 格式与 "f" 格式对应,除非生成的字符串包含千位分隔符。

m

货币

属性值必须为浮点值。将值转换为代表货币金额的字符串。转换由 CurrencyString、CurrencyFormat、NegCurrFormat、ThousandSeparator、DecimalSeparator 和 CurrencyDecimals 全局变量或它们在 TFormatSettings 数据结构中的等效项控制。如果格式字符串包含精度指定符,则它将覆盖由 CurrencyDecimals 全局变量或其 TFormatSettings 等效项指定的值。

s

字符串

属性值必须为字符、字符串或 PChar 值。插入字符串或字符来代替格式指定符。如果格式字符串中包含精度指定符,则精度指定符指定生成的字符串的最大长度。如果属性值是长于此最大长度的字符串,则会截断该字符串。

x

十六进制

属性值必须为整数值。将值转换为十六进制数字字符串。如果格式字符串包含精度指定符,则其指示生成的字符串必须至少包含指定的位数;如果值少于指定的位数,则生成的字符串会在左边添加零。