Раздел: Стандартные функции Паскаля
Процедура Val
Основы программирования Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее... |
Процедура Val в Паскале вычисляет числовое (перечисляемое) значение из строкового типа. Синтаксис:
procedure Val(const S : string; var V; var Code : Word);
Процедура Val в Delphi, Lazarus и Паскале преобразует значение, представленное в строке S в числовое значение или перечисляемое значение, и сохраняет это значение в переменной V, которая может быть типа Longint, Real или Byte, или любого перечисляемого типа.
Если преобразование не удалось, то параметр Code содержит индекс символа в строке S, который помешал преобразованию (вызвал ошибку).
Строка может содержать пробелы в начале.
Строка может содержать число в десятичном, шестнадцатеричном, двоичном или восьмеричном формате.
Для перечисляемых значений строка должна быть именем перечисляемого значения. Имя распознаётся без учета регистра.
Для шестнадцатеричных значений также можно использовать префикс 0x или x (без учета регистра).
Преобразование в перечисление поддерживается только с версии компилятора FreePascal 2.3.1 (или более поздней).
Если преобразование не удалось, значение параметра Code указывает позицию, в которой преобразование пошло не так. Значение V в этом случае не определено.
В любом языке программирования имеется множество функций для преобразования типов. И в Паскале их тоже очень много. Но процедуру Val во многих случаях использовать удобнее, потому что:
- Не надо подключать дополнительные модули.
- Ошибка преобразования не приводит к аварийному завершению программы.
- Процедура может работать с разными представлениями чисел.
Пример использования:
program valproc; type TSeasons = (Winter, Spring, Summer, Autumn); var iVar : LongInt; fVar : Real; Err : WORD; Seasons : TSeasons; //**************************************************************** // ОСНОВНАЯ ПРОГРАММА //**************************************************************** begin //Преобразуем целое десятичное число Val('100', iVar, Err); WriteLn(iVar, ' = 100 dec'); //Преобразуем целое шестнадцатеричное число Val('0x64', iVar, Err); WriteLn(iVar, ' = 0x64 hex'); //Преобразуем целое шестнадцатеричное число Val('$64', iVar, Err); WriteLn(iVar, ' = $64 hex'); //Преобразуем целое восмеричное число Val('&144', iVar, Err); WriteLn(iVar, ' = &144 oct'); //Преобразуем целое двоичное число Val('%01100100', iVar, Err); WriteLn(iVar, ' = %01100100 bin'); //Преобразуем вещественное число Val('3.14', fVar, Err); WriteLn(fVar:0:4); //Преобразуем перечисление Val('Summer', Seasons, Err); WriteLn(Seasons); //Пытаемся преобразовать неправильное вещественное число //В переменной Err будет число 2, т.к. в строковых //представлениях вещественных чисел должна быть точка, //а не запятая Val('3,14', fVar, Err); if Err = 0 then WriteLn(fVar:0:4) else WriteLn('Error at character index ', Err); WriteLn('Then end. Press ENTER...'); ReadLn; end.
Пояснять тут особо нечего - всё рассказано в комментариях. Для лучшего понимания работы программы см. рисунок:
Вступить в группу "Основы программирования"
Подписаться на канал в РУТУБ Подписаться на Дзен-канал Подписаться на рассылки по программированию |
Как стать программистом 2.0
Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее... |
Помощь в технических вопросах
Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее... |