На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> CAtlRegExp проблема с русскими символами
    Тебуется из фразы содержащей русские и английские символы извлечь слово LH(HL) (к примеру):
    ExpandedWrap disabled
          CAtlRegExp<> regExp;
          CAtlREMatchContext<> mc;
          regExp.Parse("{[ ][LH]+[ \n]}");
          CString str1 = "фара LH\n";
          if(regExp.Match(str1, &mc))
              TRACE("TRUE\n");
          else
              TRACE("FALSE\n");


    Если это делать без использования скобок [], то работает, правда приходится по другому записывать.

    А в приведенном выше примери при выполнении вылетает ошибка (материца на символ 'ф'):
    код из файла atlrx.h (строка на которую ругается, помечена коментарием)
    ExpandedWrap disabled
      case RE_RANGE:
          {
              if (*sz == '\0')
              {
                  ip = (size_t) pContext->Pop();
                  break;
              }
       
              unsigned char *pBits = (unsigned char *) (&m_Instructions[ip]+1);
              size_t u = (size_t) *sz;
              if (pBits[u >> 3] & 1 << (u & 0x7))         // маты на эту строку, при этом дебагер пишет что переменная *sz содержит: -12'ф'
              {
                  ip += InstructionsPerRangeBitField();
                  ip++;
                  sz = CharTraits::Next(sz);
              }
              else
              {
                  ip = (size_t) pContext->Pop();
              }
          }
          break;


    Добавлено
    Еще у меня почему-то код русских символов, отрицательный.

    Может это как-то связано с верхним вопросом?

    ExpandedWrap disabled
      len = str.GetLength();
      for(short i=0;i<len;i++)
      {
          //получаем код символа
          code = (int)str.GetAt(i);
          TRACE("%d\n",code);
      }


    Для русских символов, выводит отрицательные значения.
    Сообщение отредактировано: sabvi -
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0206 ]   [ 16 queries used ]   [ Generated: 28.04.24, 17:58 GMT ]