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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2011, 00:18   #1
paravoz1k
Пользователь
 
Аватар для paravoz1k
 
Регистрация: 26.03.2010
Сообщений: 78
По умолчанию Множества! Не видит русских строчных символов, и английских

Код:
  value := Length(s) ;
for i:= 1 to value do
begin
if s[i] in ['а'..'z'] then edit3.Text := edit3.Text + s[i];
if s[i] in ['а'..'я']  then edit4.Text :=  edit4.Text + s[i];
if s[i] in ['1'..'9']   then edit5.Text:=edit5.Text + s[i];
end;
s - строка

Программма не хочет разность буковки по категориям! Ума не приложу приложу почему! Господа, прошу вас помочь, реально непонимаю в чем моя ошибка
Начинающий кодер Delphi + PHP
paravoz1k вне форума Ответить с цитированием
Старый 09.04.2011, 00:25   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Множество русских букв НЕЛЬЗЯ задавать напрямую, как это сделали вы
Код:
['а'..'я']
Оно имеет разрыв.
Вадим Мошев вне форума Ответить с цитированием
Старый 09.04.2011, 00:27   #3
paravoz1k
Пользователь
 
Аватар для paravoz1k
 
Регистрация: 26.03.2010
Сообщений: 78
По умолчанию

Цитата:
Оно имеет разрыв.
тогда можно спросить где разрыв?
И почему по такому методу и английские строчные не идут в свой edit....
Начинающий кодер Delphi + PHP
paravoz1k вне форума Ответить с цитированием
Старый 09.04.2011, 00:34   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Где разрыв, я не помню.
Опишите чётко и подробно задачу, что требуется сделать...
Вадим Мошев вне форума Ответить с цитированием
Старый 09.04.2011, 04:47   #5
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Сообщение от paravoz1k Посмотреть сообщение
И почему по такому методу и английские строчные не идут в свой edit....
потому, что русская 'a' вот тут:

Цитата:
if s[i] in ['а'..'z'] then edit3.Text := edit3.Text + s[i];
ваш КО
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 09.04.2011, 09:10   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) veniside, отлично! Абсолютно точно, при задании диапазона надо быть ЧРЕЗВЫЧАЙНО внимательным. действительно, от русской буквы 'а' до латинской 'z' нет ни одной буквы, т.к. код русской буквы больше кода латинской!

2) никаких разрывов в русских буковках нет (они есть в MS DOS турбо Паскале (таблица 866), а это ж Delphi, тут коды букв согласно таблице Windows-1251)

3) а куда ноль потеряли? или он уже не цифра?!
я уже молчу про ПРОПИСНЫЕ буквы, которые будут игнорироваться данным кодом...

4) вот, проверил.
всё работает как часы!
Код:
var s : AnsiString;
   i : integer;
begin
  s := Edit1.Text ;
for i:= 1 to Length(s) do
begin
  if s[i] in ['a'..'z'] then edit3.Text := edit3.Text + s[i];
  if s[i] in ['а'..'я'] then edit4.Text := edit4.Text + s[i];
  if s[i] in ['0'..'9'] then edit5.Text := edit5.Text + s[i];
end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод русских символов в консоль fs444 Общие вопросы C/C++ 10 23.02.2016 10:29
Подсчет русских и английских букв в текстовом файле. Ветас Помощь студентам 6 15.01.2009 22:08