Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 12

Оператор if не работает с кирилицей

14.07.2015, 13:23. Показов 734. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Перебираю строку по символьно ищу пара символов, ну например _Т если буква Т на кирилице то оператор не срабатывает если поставить на анг.раскладке то все ок.
кто что подскажет.

C++
1
2
3
4
5
6
if ((zap[per1]=='_') && (zap[per1+1]=='Т'))
{
    Edit8->Text=zap[81];            
        per1=per1+16;
 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.07.2015, 13:23
Ответы с готовыми решениями:

Str_ireplace не работает с кирилицей в регистре в файле utf8
С латиницей работает, а с кирилицей в Большом регистре не работает, если файл в кодировке utf8 пример: $a=array('Азбука','как...

Не работает функция strtolower и strupper с кирилицей. С английскими все нормально.
1. Отправляю функцией mail информацию для пользователся. На адреса @mail, @rambler, @list приходит, все нормально, а на @yandex и...

Один оператор не работает, а другой работает
Такой прикол: в теле функции loop один оператор switch работает, а второй не работает. Не работает тот, что switch...

11
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
14.07.2015, 18:16
А так:
C++
1
if ((zap[per1]=='_') && ((zap[per1+1]=='T') || (zap[per1+1]=='Т')))
Но наверняка есть другой ("более правильный") способ.
0
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 12
14.07.2015, 18:51  [ТС]
Нет не работает, дело почему то в русских буквах. на англ. все идет
0
619 / 218 / 51
Регистрация: 22.11.2010
Сообщений: 1,781
Записей в блоге: 3
14.07.2015, 20:42
Свойство Text компонента Edit1 принимает значения в кодировке UnicodeString. Кажись ты указываешь в типе char, поэтому надо делать преобразование. Поиграйся со следующими окончаниями строка.c_str() и строка.w_str()
0
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 12
15.07.2015, 05:59  [ТС]
Нет тоже не работает вот малехо еще кода приписал.

C++
1
String zap;zap=Edit2->Text;
zap=zap.w_str(); или zap=zap.c_str(); - не помогает
C++
1
2
3
4
5
6
if ((zap[per1]=='_') && (zap[per1+1]=='Т'))
{
    Edit8->Text=zap[81];            
        per1=per1+16;
 
}
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
15.07.2015, 10:44
Вариант в лоб:
C++
1
2
3
4
String zap;
zap = Edit1->Text;
if( zap[1]=='_' && ( zap[2]==84 || zap[2]==-46 ) )
  ShowMessage( (int)Edit1->Text[2] );
0
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 12
15.07.2015, 11:59  [ТС]
да если узнать числовой код символа через (int)Edit1->Text и подставлять его в условие то помогает
Спасибо.
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
15.07.2015, 12:27
Цитата Сообщение от Varlus Посмотреть сообщение
Спасибо.
Рано радуетесь. При других конфигурациях системы (кодовых страниц) вся эта шаткая конструкция скорее всего будет работать неверно.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33378 / 21502 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 11
15.07.2015, 12:31
Varlus, начинать надо с того, какая версия Билдера, в какой кодировке сохранен исходник, и что такое вообще zap, какого типа эта переменная? И потом, на кой это посимвольное сравнение, если есть возможность искать Pos-ом?
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
15.07.2015, 13:08
Соглашусь с ребятам, единственный способ сравнения - сравнивать по коду символа, для чела же все-равно в какой раскладке "O" написана, а для машины - это совсем другое.
0
1 / 1 / 0
Регистрация: 07.01.2015
Сообщений: 48
19.07.2015, 10:11
Отладчиком проверяли, какое значение считывает? Может, компилятор считывает значение char, тогда русские символы будут отрицательными (идут после 128). В этом случае придется использовать преобразование типов
C++
1
((unsigned char)zap[per1+1]=='Т')
Добавлено через 7 минут
Хотя и zap[per1+1] и 'Т' должны быть char

Добавлено через 10 минут
Вернее, даже так:
C++
1
(zap[per1+1]==(unsigned char)'Т')
0
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
19.07.2015, 19:37
почему-то мне кажется, что ТС в своём ифе просто пишет латинскую 'T'. Естественно, проверка не срабатывает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.07.2015, 19:37
Помогаю со студенческими работами здесь

Работа с кирилицей
Такой ворпрос, как работать с кирилицей в консоли Ubuntu, а именно узнать код символа.

Домен кирилицей
http://www.стелажи.com/ http://www.мебель.com/

Проблема с кирилицей!
Не вставляются в базу строки с кирилице. Т.е. они вставляются, но сразу же отображаются в разных кодах. Что делать? В реестре я...

Проблемка с кирилицей из CMD
OS: win7 Интерпретатор Python Shell Делаю примерно такое >>> # -*- coding: utf-8 -*- >>> # -*- coding: cp1251 -*- >>>...

Ссылки с кирилицей в мазиле
Ещё одна проблемка. Мб не совсем сюда вопрос, но всеже вдруг кто сталкивался и успешно решил. Ссылки с кирилицей из лотусевой базы под...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru