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
Val
Процедура
Конвертирует числовые строки в целое число или число с плавающей запятой System unit
  procedure Val ( const NumberString : string; var NumberVar : Number Type; var ErrorCode : Integer ) ;
Описание
Процедура Val является старой процедурой Delphi, которая может преобразовать строку NumberString в целое число или в число с плавающей запятой.

Переменная NumberVar должна соответствовать числовой строке. Должно быть обеспечено целочисленное строковое значение, чтобы получить целочисленный тип.

Если преобразование успешно, то ErrorCode устанавливается в 0. Иначе, он устанавливается на первый символ в NumberString, который привел ошибке преобразования.
Примечания
Предупреждение: более безопасно использовать SysUtils конверсионные подпрограммы, типа StrToFloat, где информация региона распознаётся. В частности символ, используемый для десятичной точки.
Похожие команды
Chr  Конвертирует целое число в символ

IntToStr  Конвертирует целое число в строку

StrToInt  Преобразует строку с целым значением в Integer

 
Пример кода : Иллюстрация успешного и неудачного преобразования строки с вещественным числом
var
  numberString : string;
  float        : Extended;
  errorPos     : Integer;
begin
  // Установка строки правильным с вещественным числом
  numberString := '12345.678';

  // Его преобразование в значение
  Val(numberString, float, errorPos);

  // Показ строки и преобразованного значения
  if errorPos = 0
  then ShowMessageFmt('Val(%s) = %12.3f',[numberString,float]);

  // Val игнорирует Десятичный Разделитель, а конвертеры SysUtils - нет
  DecimalSeparator := '_';
  numberString := '12345_678';
  Val(numberString, float, errorPos);
  if errorPos = 0
  then ShowMessageFmt('Val(%s) = %12.3f',[numberString,float])
  else ShowMessageFmt('Val(%s) потерпело неудачу в позиции %d',
                      [numberString, errorPos]);
end;
Val(12345.678) = 12345.678
Val(12345_678) потерпело неудачу в позиции 6
 



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