Difference between revisions of "Format function"

From Free Pascal wiki
Jump to navigationJump to search
(Typo)
(Fix errors and ambiguities)
Line 2: Line 2:
  
  
The format function formats a series of strings and numeric values and stores the resulting in string.
+
The format function formats a series of values into a string.
  
To see the the right result in all cases, you should use the monospaced font (fixed-width).
+
The formatting rule for each given argument is:
Examples of monospaced fonts include Courier, Courier New, Lucida Console
+
  % [ArgumentIndex] ['-'] [width] [. precision] ArgumentType
 
 
 
 
The most basic rule that string formatting follows is this:
 
  % [argument index] [flag] [width] [.precision] argument type
 
  
  
 
== Argument type ==
 
== Argument type ==
 
 
* d = Decimal (integer)
 
* d = Decimal (integer)
 
* e = Scientific
 
* e = Scientific
Line 26: Line 21:
  
 
== Integer formatting ==
 
== Integer formatting ==
 
 
{| class="wikitable"  
 
{| class="wikitable"  
 
|-
 
|-
Line 100: Line 94:
  
  
The above program will print out :
+
The above statements will create a set of strings that look like:
  
 
  Column 1    Column 2     
 
  Column 1    Column 2     

Revision as of 13:36, 10 March 2015

Format

The format function formats a series of values into a string.

The formatting rule for each given argument is:

% [ArgumentIndex] ['-'] [width] [. precision] ArgumentType


Argument type

  • d = Decimal (integer)
  • e = Scientific
  • f = Fixed
  • g = General
  • m = Money
  • n = Number (floating)
  • p = Pointer
  • s = String
  • u = Unsigned decimal
  • x = Hexadecimal

Integer formatting

  %d Will print the integer as it is.
  %8d Will pint the integer as it is. If the number of digits is less than 8, the output will be padded on the left.
  %-8d Will pint the integer as it is. If the number of digits is less than 8, the output will be padded on the right.
  %.8d Will pint the integer as it is. If the number of digits is less than 8, the output will be padded on the left with zeroes.

String formatting

  %s Will print the string as it is.
  %8s Will pint the string as it is. If the string has less than 8 characters, the output will be padded on the left.
  %-8s Will pint the string as it is. If the string has less than 8 characters, the output will be padded on the left.

Example to use

...

procedure TForm1.Button1Click(Sender: TObject);
var
  title,  title2,
  underline,
  line, row1, row2, row3,
  fmt : string;
  i : integer;
begin
  fmt := '%-12s';
  title := format(fmt,['Column 1']) + format(fmt,['Column 2']) ;
  for i := 1 to 12 do underline := underline + '-';
  underline := underline + underline ;
  fmt := '%-12d';
  line := format(fmt,[15]) + format(fmt,[8]) ;
  fmt := '%12s';
  title2 := format(fmt,['Column 1']) + format(fmt,['Column 2']) ;
  fmt := '%12d';
  row1 := format(fmt,[15]) + format(fmt,[8]) ;
  row2 := format(fmt,[1005]) + format(fmt,[809]) ;
  fmt := '%12.5d';
  row3 := format(fmt,[1005]) + format(fmt,[809]) ;
  Memo1.Lines.Add( title );
  Memo1.Lines.Add( underline );
  Memo1.Lines.Add( line );
  Memo1.Lines.Add( '' );
  Memo1.Lines.Add( title2 );
  Memo1.Lines.Add( underline );
  Memo1.Lines.Add( row1 );
  Memo1.Lines.Add( row2 );
  Memo1.Lines.Add( row3 );
end; 

...


The above statements will create a set of strings that look like:

Column 1    Column 2    
------------------------
15          8           
    Column 1    Column 2
------------------------
          15           8
        1005         809
       01005       00809



See also