Чтобы преобразовать обычные строки base-10 в числа, вы берете каждый символ слева направо, конвертируете его в его числовое значение (от 0 до 9) и добавляете его к сумме, которая у вас уже есть (которую вы инициализируете в ноль) , Если после того, как вы только что обработали, осталось больше символов, то умножьте сумму на 10. Повторяйте, пока не закончится количество символов.
Например, число 374 составляет 3 × 10 2 + 7 × 10 1 + 4 × 10 0 . Другой способ записать это, который более точно моделирует алгоритм преобразования, который я описал выше, это (((3) × 10 + 7) × 10 + 4.
Вы можете адаптировать это для обработки любой строки символов, а не только числовых символов. Вместо 10 база равна 26, так что умножьте на это. И вместо цифр символы от a до z . Пример строки будет оцениваться так: ((( l ) × 26 + m ) × 26 + a ) × 26 + o . Подставьте цифры для этих букв, и вы получите 219 742.
Вот код для этого. Это не проверяет на ошибки; предполагается, что строка будет содержать только допустимые символы и что строка не будет представлять число, которое слишком велико, чтобы поместиться в переменную Integer.
function SpecialStrToInt(const s: string): Integer;
var
i: Integer;
subtotal: Integer;
c: Char;
charval: Integer;
begin
subtotal := 0;
for i := 1 to Length(s) do begin
c := s[i];
charval := Ord(c) - Ord('a') + 1;
subtotal := subtotal * 26;
subtotal := subtotal + charval;
end;
SpecialStrToInt := subtotal;
end;
Странность вашего формата в том, что нет возможности представить ноль.