Функция Format в Delphi – расширенное форматирование чисел и текста в строке.
SysUtils unit
- function Format ( Const Formatting : string; Const Data : array of const ) : string;
- function Format ( Const Formatting : string; Const Data : array of const; FormatSettings : TFormatSettings ) : string;
Функция Format обеспечивает 'C' подобное форматирование множества простых типов данных в строке. Она обеспечивает очень точное управление по этому форматированию.
Параметр Formatting определяет, как массив Data Данных управляется в возвращенной строке.
Форматируемая cтрока может включать соединение обычных символов (которые передаются неизменными в строку результата), и символам форматирования данных. Такое форматирование лучше всего объясняется кодом примера.
В простых условиях каждые данные, форматирующие подстроку начинаются с % и заканчиваются индикатором типа данных:
- d = Десятичное (целое число)
- e = Научный
- f = Установленный (фиксированный)
- g = Общий
- m = Деньги
- n = Число (плавающее)
- p = Указатель
- s = Строка
- u = Десятичное число без знака
- x = Шестнадцатеричный
Общий формат форматирования каждой подстроки следующий:
%[Index:][-][Width][.Precision]Type
где квадратные скобки относятся к дополнительным параметрам, и :. - символы - литералы, первые 2 из которых используются, чтобы идентифицировать два из дополнительных параметров.
Версия 2 этой функции – для использования в пределах потоков. Вы должны заполнить запись FormatSettings перед вызовом запроса. Она берёт местную копию глобальной переменной, форматирующей переменные, которые делают подпрограмму потокобезопасной.
Примечание.
Различные опции форматирования, типа DecimalSeparator и CurrencyString используются для некоторых из этих опций форматирования. См. более определенные версии команд отображения данных, типа CurrToStrF для подробностей.
Функция Format: Показ всех форматируемых типов данных
var
text : string;
begin
// Только 1 элемент данных
ShowMessage(Format('%s', ['Hello']));
// Соединение символьного текста и элемента данных
ShowMessage(Format('String = %s', ['Hello']));
ShowMessage('');
// Примеры каждого из типов данных
ShowMessage(Format('Decimal = %d', [-123]));
ShowMessage(Format('Exponent = %e', [12345.678]));
ShowMessage(Format('Fixed = %f', [12345.678]));
ShowMessage(Format('General = %g', [12345.678]));
ShowMessage(Format('Number = %n', [12345.678]));
ShowMessage(Format('Money = %m', [12345.678]));
ShowMessage(Format('Pointer = %p', [addr(text)]));
ShowMessage(Format('String = %s', ['Hello']));
ShowMessage(Format('Unsigned decimal = %u', [123]));
ShowMessage(Format('Hexadecimal = %x', [140]));
end;
Результат
Hello
String = Hello
Decimal = -123
Exponent = 1.23456780000000E+004
Fixed = 12345.68
General = 12345.678
Number = 12,345,68
Money = ?12,345.68
Pointer = 0069FC90
String = Hello
Unsigned decimal = 123
Hexadecimal = 8C
Функция Format: Используя индекс, ширину и значения точности
begin
// Значение ширины диктует размер вывода
// с пробелом, добавляющемся слева
// Обратите внимание <>, символы добавляются, чтобы показать форматирование
ShowMessage(Format('Padded decimal = <%7d>', [1234]));
// С '-' оператором, данные выравниваются влево
ShowMessage(Format('Justified decimal = <%-7d>', [1234]));
// Значение точности вынуждает 0 дополнений к желательному размеру
ShowMessage(Format('0 padded decimal = <%.6d>', [1234]));
// Комбинация ширины и точности
// Обратите внимание, что значение ширины предшествует значению точности
ShowMessage(Format('Width + precision = <%8.6d>', [1234]));
// Индексное значение позволяет следующему значению в массиве
// данных быть измененным
ShowMessage(Format('Reposition after 3 strings = %s %s %s %1:s %s',
['Zero', 'One', 'Two', 'Three']));
// Обратите внимание, испытание показало, что * для параметра ширины
// может привести к ECONVERTERROR.
ShowMessage(Format('In line = <%10.4d>', [1234]));
ShowMessage(Format('Part data driven = <%*.4d>', [10, 1234]));
ShowMessage(Format('Data driven = <%*.*d>', [10, 4, 1234]));
end;
Результат
Padded decimal = < 1234>
Justified decimal = <1234 >
0 padded decimal = <001234>
Width + precision = < 001234>
Reposition after 3 strings = Zero One Two One Two
In line = < 1234>
Part data driven = < 1234>
Data driven = < 1234>
Похожие функции, процедуры и команды
CurrencyDecimals — определяет число десятичных цифр в функции Format.
CurrencyFormat — определяет размещение строки валюты в функции показа валюты.
CurrencyString — строка валюты, используемая в функциях отображения валюты.
CurrToStrF — преобразует денежную величину в строку с форматированием.
DecimalSeparator — символ используемый для отображения десятичной точки.
FloatToStrF — преобразует значение с плавающей запятой в строку с форматированием.
FormatCurr — расширенное форматирование значений валюты в строку.
FormatDateTime — расширенное форматирование переменной TDateTime в строку.
FormatFloat — расширенное форматирование числа с плавающей запятой в строку.
NegCurrFormat — определяет отображение отрицательного количества форматированной валюты.
ThousandSeparator — символ, используемый для отображения разделителя тысяч.
