Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2010, 14:18   #1
I.nessa
Новичок
Джуниор
 
Регистрация: 11.12.2010
Сообщений: 8
По умолчанию Преобразование в число (Delphi)

Здравствуйте.

Как сделать преобразование строки (в которой только буквы) в числовое значение, соответствующее порядковому номеру этой буквы в алфавите?

Т.е.

А=1, Б=2, В=3 etc
I.nessa вне форума Ответить с цитированием
Старый 14.12.2010, 14:21   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Внесите весь алфавит в строку. Это эталон. Далее в цикле проходите по строке и ищете в ней Ваш символ - его местоположение и будет Вам указывать Вашу цифру.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 14.12.2010, 14:23   #3
I.nessa
Новичок
Джуниор
 
Регистрация: 11.12.2010
Сообщений: 8
По умолчанию

Можно пример?

От А до В например
I.nessa вне форума Ответить с цитированием
Старый 14.12.2010, 14:26   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Код:
x:='АБВГДЕЖ';
result:=-1;
for i:=1 to 7 do
begin
    if Symbol=x[i] then
    begin
        result:=i;
        Break;
    end;
end;
Здесь результат -1, в случае если буква не нашего алфавита буква (а например цифра).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 14.12.2010 в 14:29.
Utkin вне форума Ответить с цитированием
Старый 14.12.2010, 14:37   #5
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

на форме 1 кнопка и 1 Edit

Код:
procedure TForm1.Button1Click(Sender: TObject);
const
masAlf: array[1..33] of char = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
var
s: String;
i: integer;
begin
s:=Edit1.text;
for i := 1 to 33 do
if s=masAlf[i] then
showmessage(IntToStr(i));

end;
Разумеется для букв верхнего регистра расширяйте массив еще на 33 символа и добавляйте их.
wm_leviathan вне форума Ответить с цитированием
Старый 14.12.2010, 14:40   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от wm_leviathan Посмотреть сообщение
Разумеется для букв верхнего регистра расширяйте массив еще на 33 символа и добавляйте их.
Наверно лучше делать преобразование в один регистр - все-таки в алфавите 33 буковы, а не 66...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 14.12.2010, 14:45   #7
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Наверно лучше делать преобразование в один регистр - все-таки в алфавите 33 буковы, а не 66...
можно и так добавим AnsiLowerCase
Код:
s:=AnsiLowerCase(Edit1.text);
теперь что "А" что "а" все равно 1 выдаст
wm_leviathan вне форума Ответить с цитированием
Старый 14.12.2010, 14:50   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

хочу заметить, если стоит задача и расшифровки, то следует добавить разделители для чисел, либо исключить совпадающие комбинации, либо привести к одному основанию.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 14.12.2010 в 14:53.
raxp вне форума Ответить с цитированием
Старый 14.12.2010, 14:56   #9
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

А если посмотреть на кодировку символов?
Код:
ord('A')-191//=1;
ord('Б')-191//=2
тогда не надо массивов
SERG1980 вне форума Ответить с цитированием
Старый 14.12.2010, 15:02   #10
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от SERG1980 Посмотреть сообщение
А если посмотреть на кодировку символов?
Код:
ord('A')-191//=1;
ord('Б')-191//=2
тогда не надо массивов
Это уже обсуждалось. Напомню А и а должны иметь один код, а не 2...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как поделить число на число в delphi? Даниил_глазко Помощь студентам 13 11.11.2010 16:32
преобразование чисел(delphi) mineralkaaa Помощь студентам 4 18.05.2010 13:00
Преобразование строки символов в число. pa6kevi4 Общие вопросы C/C++ 2 15.09.2009 20:46
XSLT преобразование в delphi 7 ZeitGeist7 Компоненты Delphi 19 04.03.2009 21:34
Преобразование даты в вещественное число nova-alex Общие вопросы Delphi 5 03.05.2007 10:51