![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Что-то меня глючит... Писал-писал прогу, и вдруг бац! И я понял, что не знаю как вычислить порядковый номер буквы в алфавите.
Например: а = 1; b = 2; c = 3... etc и русскими: а = 1; б = 2; в = 3 ... итд |
|
#2
|
||||
|
||||
|
Запиши алфавит в массив
a: array[1..33] of char; a[1] := 'а'; и т.д. и работай с этим массивом. |
|
#3
|
||||
|
||||
|
Этот вариант я знаю, но помоему это глупо. Мот кто даст более умный совет???
|
|
#4
|
||||
|
||||
|
Поэксперементируй с процедурой Ord.
|
|
#5
|
||||
|
||||
|
Я тоже канечно глупо придумал
но так можно... например: Код:
//для русского:
edit1.Text:=inttostr(ord('а')-223);
//и для английского:
edit2.Text:=inttostr(ord('a')-96);
![]() |
|
#6
|
|||
|
|||
|
Для английского может быть и типа этого пойдет :
Код:
function GetOrderChar(Ch : char) : byte;
Var
S : string;
begin
S:=Ch;
S:=AnsiUpperCase(S);
Ch:=S[1];
Result:=ORD(Ch)-ORD('A')+1;
end; |
|
#7
|
|||
|
|||
|
Т.к. мы работаем обычно с 2мя алфавитами, а именно англ. и русским, то можно так:
Код:
function LetterNumber(Ch : Char) : Integer;
function GetLN(C, F : Char) : Integer;
begin
Result := Ord(C) - Orc(F) + 1;
end;
begin
Case Ch Of
'A'..'Z' : Result := getLn(Ch,'A');
'a'..'z' : Result := getLn(Ch,'a');
'А'..'Я' : Result :=getLn(Ch,'А');
'а'..'я' : Result := getLn(Ch,'а');
Else Result := 0; // Ошибка, не буква
end;
end; |
|
#8
|
|||
|
|||
|
Нормально вы так тему "реинкарнировали" столько лет спустя)
|
|
#9
|
||||
|
||||
|
А что нормально
всего 4 года прошло ![]() Я заметил после того, как ответил ![]() |
|
#10
|
|||
|
|||
|
Нда. "Лопухнулись". :-)
|
|
#11
|
||||
|
||||
|
Сначала некропост, потом оффтоп... И *фанфары* среди этого всего модератор Imikle! O_o Как?!
|