|
Показывает форматированные данные
в простом диалоговом окне с
кнопкой ОК
Описание:
Процедура ShowMessageFmt предоставляет
С-подобное форматирование множества простых типов данных, которые показываются
один за другим, в строку.
Параметр Formatting
определяет как массив Data передается в выводимую строку.
Диалоговое окно, которое показывается
пользователю, содержит кнопку ОК, чтобы позволить ему прочитать сообщение и
закрыть диалог.
Строка Formatting может
состоять из набора обычных символов (которые передаются в строку-результат без
изменений) и из символов форматирования данных. Это форматирование лучше всего
объяснено в нашем примере кода.
Проще говоря,
каждая подстрока форматирования данных начинается с % и заканчивается указателем
на тип данных:
d
|
= десятичный (целый)
|
e
|
= научный
|
f
|
= фиксированный
|
g
|
= общий
|
m
|
= денежный
|
n
|
= число (с плавающей запятой)
|
p
|
= указатель
|
s
|
= строка
|
u
|
= без знаковое целое
|
x
|
=
шестнадцатеричное
|
Общий
формат каждой подстроки форматирования представлен ниже:
%[Индекс:][-][Ширина][.Точность]Тип
Где квадратные скобки указывают на
необязательные параметры, символы :. - являются литералами, первые два из
которых используются для установки двух необязательных аргументов.
Пример кода:
var
text : string;
begin
// Just 1 data item
ShowMessageFmt('%s',
['Hello']);
// A mix of literal text and a data item
ShowMessageFmt('String = %s', ['Hello']);
ShowMessage('');
// Examples of each of the data types
ShowMessageFmt('Decimal = %d', [-123]);
ShowMessageFmt('Exponent = %e', [12345.678]);
ShowMessageFmt('Fixed = %f', [12345.678]);
ShowMessageFmt('General = %g', [12345.678]);
ShowMessageFmt('Number = %n', [12345.678]);
ShowMessageFmt('Money = %m', [12345.678]);
ShowMessageFmt('Pointer = %p', [addr(text)]);
ShowMessageFmt('String = %s', ['Hello']);
ShowMessageFmt('Unsigned decimal = %u', [123]);
ShowMessageFmt('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
// The width value dictates the
output size
// with blank padding to the left
// Note the <> characters are added to show formatting
ShowMessageFmt('Padded decimal = <%7d>', [1234]);
//
With the '-' operator, the data is left justified
ShowMessageFmt('Justified decimal = <%-7d>', [1234]);
// The precision value forces 0 padding to the desired size
ShowMessageFmt('0 padded decimal = <%.6d>', [1234]);
// A combination of width and precision
// Note that width
value precedes the precision value
ShowMessageFmt('Width +
precision = <%8.6d>', [1234]);
// The index value
allows the next value in the data array
// to be changed
ShowMessageFmt('Reposition after 3 strings=%s %s %s %1:s %s',
['Zero', 'One', 'Two', 'Three']);
// One or more of
the values may be provided by the
// data array itself. Note
that testing has shown that an *
// for the width parameter can
yield EConvertError.
ShowMessageFmt('In line = <%10.4d>',
[1234]);
ShowMessageFmt('Part data driven = <%*.4d>',
[10, 1234]);
ShowMessageFmt('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>
|
|