string to integer conversion in Pascal, How to do it?
How to convert a number printed in a string into integer?
5 Answers 5
The is procedure Val:
This procedure operate on decimal and real numbers.
Parmeters:
- S char sequence; for proper conversion it has to contain ‘+’, ‘-‘, ‘,’, ’.’, ’0’..’9’.
- V The result of conversion. If result going to be an Integer then S can’t contain ‘,’, ’.’.
- C Return the position of the character from S, that interrupt the conversion.
Use cases:
You can use Val function.
You can use like this,
Val( TextVal, Number , Code) which converts String to a number. if possible the result of code = 0, elese error indication number.
-
The Overflow Blog
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.3.11.43304
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
StrToInt
StrToInt will convert the string S to an integer. If the string contains invalid characters or has an invalid format, then an EConvertError is raised.
To be successfully converted, a string can contain a combination of numerical characters, possibly preceded by a minus sign ( — ). Spaces are not allowed.
The string S can contain a number in decimal, hexadecimal, binary or octal format, as described in the language reference. For enumerated values, the string must be the name of the enumerated value. The name is searched case insensitively.
For hexadecimal values, the prefix ‘0x’ or ‘x’ (case insensitive) may be used as well.
Процедура Val
Процедура Val в Паскале вычисляет числовое (перечисляемое) значение из строкового типа. Синтаксис:
Процедура Val в Delphi, Lazarus и Паскале преобразует значение, представленное в строке S в числовое значение или перечисляемое значение, и сохраняет это значение в переменной V, которая может быть типа Longint, Real или Byte, или любого перечисляемого типа.
Если преобразование не удалось, то параметр Code содержит индекс символа в строке S, который помешал преобразованию (вызвал ошибку).
Строка может содержать пробелы в начале.
Строка может содержать число в десятичном, шестнадцатеричном, двоичном или восьмеричном формате.
Для перечисляемых значений строка должна быть именем перечисляемого значения. Имя распознаётся без учета регистра.
Для шестнадцатеричных значений также можно использовать префикс 0x или x (без учета регистра).
Преобразование в перечисление поддерживается только с версии компилятора FreePascal 2.3.1 (или более поздней).
Если преобразование не удалось, значение параметра Code указывает позицию, в которой преобразование пошло не так. Значение V в этом случае не определено.
В любом языке программирования имеется множество функций для преобразования типов. И в Паскале их тоже очень много. Но процедуру Val во многих случаях использовать удобнее, потому что:
- Не надо подключать дополнительные модули.
- Ошибка преобразования не приводит к аварийному завершению программы.
- Процедура может работать с разными представлениями чисел.
Пояснять тут особо нечего — всё рассказано в комментариях. Для лучшего понимания работы программы см. рисунок:
Процедуры STR и VAL.
В строковую переменную можно записывать не только буквы, но и цифры. Однако это будут не числа, как таковые, а их символьное представление. Для преобразования символьных представлений числа в само число, и наоборот, используются процедуры STR и VAl.
Например, возьмем 2 числа: 125 и 347. Если эти числа записаны в строковых переменных, то с ними можно производить те действия, которые производятся над строками. Например, в результате операции сцепления 125+347 получится 125347. Если же данные числа будут записаны в переменных типа Integer или Real, то над ними можно производить операции, предусмотренные для чисел (сложение, вычитание умножение, деление, DIV, MOD и т.д.). Например, в результате операции сложения 125+347 получится 472.
В языке программирования Pascal предусмотрена возможность преобразования чисел в их символьное представление и наоборот.
Процедура STR преобразует число целого или вещественного типов в его строковое представление. Процедура имеет 2 параметра: STR (X, ST), где «X» — это число, а ST – его строковое представление. Также, можно указывать формат преобразования: STR(X:A:B, ST), где «A» задает ширину всего поля, которое выделяется для строкового представления числа, а «B» — количество символов в дробной части (последний параметр имеет значение в том случае, если преобразуется вещественное число). Процедура STR делает с числом то же, что и оператор Writeln перед тем как вывести число на экран (преобразует число в символ).
Процедура VAL преобразует строковое представление числа в само число, которое можно записать в целочисленную или вещественную переменную. Процедура имеет 3 параметра: VAL (ST, X, CODE), где ST – строка, которую необходимо преобразовать в число, X – вещественная или символьная переменная, в которую записывается это число, CODE – необязательный параметр, который, в случае ошибки будет содержать номер позиции, в которой обнаружен ошибочный символ.
Использование процедуры STR.
Строка №3. Создаем 3 строковые переменные.
Строка №4. Создаем 3 целочисленные переменные.
Строка №7. В 1-ую переменную типа Integer записываем число 1234.
Строка №8. Во 2-ую переменную типа Integer записываем число 5678.
Строка №9. Складываем эти числа, результат записываем в 3-ю переменную.
Строка №10. Выводим результат на экран.
Строка№11. Переводим 1-ое число в его строковое представление, результат сохраняем в переменной «stroka1».
Строка №12. Переводим 2-ое число в его строковое представление результат сохраняем в переменной «stroka2».
Строка №13. Производим над строками операцию сцепления и записываем результат в переменную «stroka».
Строка №14. Выводим результат на экран.


О процедуре STR также можно прочитать в разделе, посвященному графике в Pascal.
Использование процедуры VAL.
Напишем программу, в которой строковой переменной будет присвоено значение, определяющее дату, например, 23.02.1965. Пусть эта дата обозначает год вашего рождения. Программа, должна подсчитать, сколько вам лет на текущий момент. Текущим моментом будем считать 2012 год.
Строка №7. В переменную «stroka1» записываем дату рождения.
Строка №8. В переменную «stroka2» копируем из переменной «stroka1» последние 4 символа, 1965.
Строка №9. Преобразовываем эти 4 символа в число и записываем это число в целочисленную переменную «rog».
Строка №10. В целочисленную переменную «let» записываем значение, которое получится при вычитании из числа 2012 числа 1965.