Что делает Ord?

Есть код:

var
i: integer; // объявляем
begin
n := 0; // объявляем в 10 системе
for i := 1 to Length(s) do //цикл Length(s) определяет текущую длину строки
if s[i] in ['0'..'7'] // от 0 до 7 могу ввести число
then n := n * 8 + ord(s[i]) - ord('0') // 
else exit; // выход
vosem := true;
end;

var
s: string; // объявление
n: longint; // объявление
begin
Write('Введите число в восьмеричной системе: '); ReadLn(s); // вывод
if vosem(s, n) // вызов функции
then WriteLn(s, '(8) = ', n, '(10)') // вывод 8 и 10
else
WriteLn('*** Плохое число'); // вывод
end.

Что делает then n := n * 8 + ord(s[i]) - ord('0') что в i и для чего - ord('0'). Нужно было и 8 в 10 систему счисления.


Ответы (2 шт):

Автор решения: KoVadim

Ord - это функция, которая берет символ (char) и переводит его в ASCII код. Благодаря тому, что цифры в ASCII упорядочены от 0 до 9, вычитая с кода символа значения кода нуля, можно получить собственно само число.

→ Ссылка
Автор решения: Eugene X

KoVadim ваш ответ совсем не верен.

Функция Ord возвращает "Порядковое число".

Что касается ASCII символа (как в примере) то это индекс символа.

Но так-же функция Ord может работать с другими типами данных например enum.

program Hello;

type
  TDigits = (dgOne, dgTwo, dgThree);

begin
  Write('Ordinal index: ', Ord(dgTwo));
end.

Вернёт

Ordinal index: 1
→ Ссылка