Описание |
Функция 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 для подробностей.
|
|
Похожие команды |
CurrencyDecimals Определяет число десятичных цифр в функции Format
CurrencyFormat Определяет размещение строки валюты в функции показа валюты
CurrencyString Строка валюты, используемая в функциях отображения валюты
CurrToStrF Преобразует денежную величину в строку с форматированием
DecimalSeparator Символ используемый для отображения десятичной точки
FloatToStrF Преобразует значение с плавающей запятой в строку с форматированием
FormatCurr Богатое форматирование значений валюты в строку
FormatDateTime Богатое форматирование переменной TDateTime в строку
FormatFloat Богатое форматирование числа с плавающей запятой в строку
NegCurrFormat Определяет отображение отрицательного количества форматированной валюты
ThousandSeparator Символ, используемый для отображения разделителя тысяч
| |
|
Пример кода : Показ всех форматируемых типов данных |
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
|
|
| Пример кода : Используя индекс, ширину и значения точности |
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>
|
|