Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  


Основы Delphi
Format
Функция
Богатое форматирование чисел и текста в строке SysUtils unit
  
1 function Format ( Const Formatting : string; Const Data : array of const ) : string;

2 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 для подробностей.
Похожие команды
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>
 



© Блог программистов   |  Создание и продвижение сайтов - "Веб сателлит"  |  Ссылки  |     |  Английская версия