SmartPascal
ShowMessageFmt
Procedure
Display formatted data in a simple dialog with an OK button Dialogs unit
 procedure ShowMessageFmt ( const Formatting : string; const Data : array of const ) ;
Description
The ShowMessageFmt procedure provides 'C' like formatting of multiple of simple data types into a string that is displayed in a single. It provides very precise control over this formatting.
 
The Formatting parameter defines how the Data array is manipulated into the displayed string.
 
The dialog has an OK button to allow the user to register the message and close the dialog.
 
The Formatting string can comprise a mix of ordinary characters (that are passed unchanged to the result string), and data formatting characters. This formatting is best explained by the example code.
 
In simple terms, each data formatting substring starts with a % and ends with a data type indicator :
 
= Decimal (integer)
= Scientific
= Fixed
= General
= Money
= Number (floating)
= Pointer
= String
= Unsigned decimal
= Hexadecimal

 
The general format of each formatting substring is as follows:
 
%[Index:][-][Width][.Precision]Type
 
where the square brackets refer to optional parameters, and the : . - characters are literals, the first 2 of which are used to identify two of the optional arguments.
Related commands
InputBox Display a dialog that asks for user text input, with default
InputQuery Display a dialog that asks for user text input
MessageDlg Displays a message, symbol, and selectable buttons
MessageDlgPos Displays a message plus buttons at a given screen position
PromptForFileName Shows a dialog allowing the user to select a file
ShowMessage Display a string in a simple dialog with an OK button
ShowMessagePos Display a string in a simple dialog at a given screen position
 
Example code : Showing all of the formatting data types
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;
Show full unit code
   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
 
Example code : Using the index, width and precision values
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    =