Показать сообщение отдельно
  #2  
Старый 02.01.2024, 04:23
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,018
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну просто же все.
Если делаем номера по порядку алфавита, то можно так:
Код:
function DigitizeString(S : String) : Integer;
var
  I : Integer;
begin
  Result := 0;
  S := AnsiUpperCase(S);
  For I := 1 To Length(S) Do
    If S[i] In ['А'..'Я'] Then
        Result := Result + (Ord(S[i])  - Ord('А') + 1);
end;

Если нумерация какая-то другая, то можно сделать массив с соовт номерами и брать из него значения вместо (Ord(S[i]) - Ord('А') + 1).
Тоже самое, если надо номера для заглавнях и строчных букв делать разнве. Тогда еще надо убрать из кода 'S := AnsiUpperCase(S);', а в If'е учитывать и строчные буквы отдельно.
Ответить с цитированием