Здравствуйте.
Помогите разобраться с AtlRegExp.
Этот код работает (взят из MSDN)
#include <atlrx.h>
...
CAtlRegExp<> re;
re.Parse( "{[0-9]+}-{[0-9]+}" );
CAtlREMatchContext<> mc;
re.Match( _T("100-1234"), &mc );
но если в строке присутствует любая
русская буква
re.Match( _T("ы100-1234"), &mc );
выскакивает ошибка:
Unhandled exception at 0x0048a5c8 in REX.exe: 0xC0000005:
Access violation reading location 0x20da54df.
Знающию люди, подскажите что к чему.
17.01.04 15:02: Перенесено модератором из 'C/C++' — ПК
Здравствуйте, r052dc, Вы писали:
R>Здравствуйте.
R>Помогите разобраться с AtlRegExp.
CAtlRegExp и русские сиволыАвтор: avlit
Дата: 24.05.02
?
Здравствуйте, Odi$$ey, Вы писали:
OE>Здравствуйте, r052dc, Вы писали:
R>>Здравствуйте.
R>>Помогите разобраться с AtlRegExp.
OE>CAtlRegExp и русские сиволыАвтор: avlit
Дата: 24.05.02
?
спасибо за ссылку.
Ознакомился с этой инфой.
Следовал приведенным рекомендациям:
1. добавил русский CharTraits
2. исправил “ошибку” в atlrx.h (04.08.01) в строке 520
Не смотря на это (даже на другом компе пробовал):
Unhandled exception at 0x0048a5c8 in REX.exe: 0xC0000005: Access violation reading location 0x20da554f.
После ошибки отсылает на строку 639 в atlrx.h
Помогите разобраться. Буду благодарен.
Здравствуйте, r052dc, Вы писали:
R>Здравствуйте.
R>Помогите разобраться с AtlRegExp.
R>Этот код работает (взят из MSDN)
R>R>#include <atlrx.h>
R>...
R>CAtlRegExp<> re;
R>re.Parse( "{[0-9]+}-{[0-9]+}" );
R>CAtlREMatchContext<> mc;
R>re.Match( _T("100-1234"), &mc );
R>
R>но если в строке присутствует любая
R>русская буква
R>R>re.Match( _T("ы100-1234"), &mc );
R>
R>выскакивает ошибка:
R>Unhandled exception at 0x0048a5c8 in REX.exe: 0xC0000005:
R>Access violation reading location 0x20da54df.
R>Знающию люди, подскажите что к чему.
Не знаю, что за ошибка, но в свое время я делал так:
CAtlRegExp<CAtlRECharTraitsW> re;
re.Parse(L"{[0-9]+}-{[0-9]+}");
CAtlREMatchContext<CAtlRECharTraitsW> mc;
re.Match(L"ы100-1234"), &mc );
Это самый безболезненный способ, и править ничего не надо. Unicode, пинимаешь ли