Converts number strings to integer and floating point values System unit
 procedure Val ( const NumberString : string; var NumberVar : Number Type; var ErrorCode : Integer ) ;
The Val procedure is an older Delphi procedure that can convert a string NumberString into both integer and floating point variables.
The variable NumberVar must be appropriate to the number string. Specifically, an integer string value must be provided when NumberVar is an Integer type.
If the conversion succeeds, then ErrorCode is set to 0. Otherwise, it is set to the first character in NumberString that failed the conversion.
Warning : it is safer to use the SysUtils conversion routines, such as StrToFloat where locale information is recognised. In particular, the character used for the decimal point.
Related commands
Chr Convert an integer into a character
IntToStr Convert an integer into a string
StrToInt Convert an integer string into an Integer value
 Author links

 Buy Website Traffic at

 Buy Proxies at
 Download this web site as a Windows program.

Example code : Illustrate successful and unsuccessful floating point number string conversions
// Full Unit code.
// -----------------------------------------------------------
// You must store this code in a unit called Unit1 with a form
// called Form1 that has an OnCreate event called FormCreate.
unit Unit1;
  // The System unit does not need to be defined
  Forms, Dialogs;
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
Form1: TForm1;
{$R *.dfm} // Include form definitions
procedure TForm1.FormCreate(Sender: TObject);

  numberString : string;
  float        : Extended;
  errorPos     : Integer;
  // Set up a valid floating point number string
  numberString := '12345.678';

  // Convert it into a value
  Val(numberString, float, errorPos);

  // Display the string and converted value
  if errorPos = 0
  then ShowMessageFmt('Val(%s) = %12.3f',[numberString,float]);

  // Val ignores the Decimal Separator - SysUtils converters don't
  DecimalSeparator := '_';
  numberString := '12345_678';
  Val(numberString, float, errorPos);
  if errorPos = 0
  then ShowMessageFmt('Val(%s) = %12.3f',[numberString,float])
  else ShowMessageFmt('Val(%s) failed at position %d',
                      [numberString, errorPos]);
Hide full unit code
   Val(12345.678) = 12345.678
   Val(12345_678) failed at position 6
Delphi Programming Neil Moffatt 2002 - 2018. All rights reserved.  |  Home Page