Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Set<char, 0, 255> TMySet

460
23 мая 2003 года
Berg
261 / / 27.03.2003
Почему сабж не работает с кириллицей? Например, такой код:

typedef Set<char, 0, 255> TMySet;
TMySet t1, t2;
t1 << 'f';
t2 << 'ж';
if (t1.Contains('f')) ShowMessage("test1 - ok");
if (t2.Contains('ж')) ShowMessage("test2 - ok");

Выдается только бокс с надписью "test1 - ok"...:-(
Это как-нить лечится?
362
23 мая 2003 года
_kolyan
339 / / 03.12.2002
Потому что 'ж' в char не влазит.
int('ж') > 127, поэтому при пихании с Set<char> 'ж' туда кладется некоторое отрицательное число

Обьяви Set<unsigned char> и все заработает
460
23 мая 2003 года
Berg
261 / / 27.03.2003
Цитата:
Originally posted by _kolyan
Потому что 'ж' в char не влазит.
int('ж') > 127, поэтому при пихании с Set<char> 'ж' туда кладется некоторое отрицательное число

Обьяви Set<unsigned char> и все заработает



Ты проверял? У меня все равно не работает! К тому же странно почему тогда в SysUtils mr.Borland сделал объявление typedef Set<char, 0, 255> TSysCharSet;

P.S. А насчет "кладется некоторое отрицательное число" я думаю, что это все-таки не так. Там (в множестве)должны просто переключаться соответствующие биты, поэтому оно и считается экономичным в смысле памяти.

362
23 мая 2003 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by Berg


Ты проверял? У меня все равно не работает! К тому же странно почему тогда в SysUtils mr.Borland сделал объявление typedef Set<char, 0, 255> TSysCharSet;

P.S. А насчет "кладется некоторое отрицательное число" я думаю, что это все-таки не так. Там (в множестве)должны просто переключаться соответствующие биты, поэтому оно и считается экономичным в смысле памяти.



Проверял, у меня работает.

Кроме того при проверке условия
if (t2.Contains('ж')) для Set<char>
компилятор сказал condition is always false - уловие заведомо неверно. Потому что не может в Set<char> (дапазон char -127 - +127) лежать число 'ж' = 230
Кстати int(char('ж')) = -26;
Проверяется просто -
printf("%c %d", 'ж', (char)'ж');
printf("%c %d", 'ж', (unsigned char)'ж');

460
23 мая 2003 года
Berg
261 / / 27.03.2003
[QUOTE]Originally posted by _kolyan


Проверял, у меня работает.

Спасибо, у меня ТЕПЕРЬ тоже работает. Но с утра определенно не работало...:-)

Тема
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог