Процедура Val в Delphi конвертує числові рядки в ціле число, або число з плаваючою комою.
System unit
procedure Val (const NumberString : string; var NumberVar : Number Type; var ErrorCode : Integer);
Процедура Val – це більш стара процедура Delphi, яка може перетворювати рядок NumberString як на цілі змінні, так і на змінні з плаваючою комою.
Змінна NumberVar повинна відповідати числовому рядку. Зокрема, ціле рядкове значення має бути надано, якщо NumberVar має тип Integer.
Якщо перетворення завершується успішно, то ErrorCode встановлюється рівним 0. В іншому випадку він встановлюється рівним першому символу в NumberString, для якого не вдалося виконати перетворення.
Попередження.
Безпечніше використовувати процедури перетворення SysUtils, такі як StrToFloat, де розпізнається інформація регіону. Зокрема, символ, який використовується для десяткової точки.
Процедура Val: Ілюстрація успішного та невдалого перетворення рядка з дійсним числом
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
Подібні функції, процедури та команди
Chr — конвертує ціле число в символ.
IntToStr — конвертує ціле число в рядок.
StrToInt — перетворює рядок з цілим значенням в Integer.