Set<char, 0, 255> TMySet
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"...:-(
Это как-нить лечится?
int('ж') > 127, поэтому при пихании с Set<char> 'ж' туда кладется некоторое отрицательное число
Обьяви Set<unsigned char> и все заработает
Цитата:
Originally posted by _kolyan
Потому что 'ж' в char не влазит.
int('ж') > 127, поэтому при пихании с Set<char> 'ж' туда кладется некоторое отрицательное число
Обьяви Set<unsigned char> и все заработает
Потому что 'ж' в char не влазит.
int('ж') > 127, поэтому при пихании с Set<char> 'ж' туда кладется некоторое отрицательное число
Обьяви Set<unsigned char> и все заработает
Ты проверял? У меня все равно не работает! К тому же странно почему тогда в SysUtils mr.Borland сделал объявление typedef Set<char, 0, 255> TSysCharSet;
P.S. А насчет "кладется некоторое отрицательное число" я думаю, что это все-таки не так. Там (в множестве)должны просто переключаться соответствующие биты, поэтому оно и считается экономичным в смысле памяти.
Цитата:
Originally posted by Berg
Ты проверял? У меня все равно не работает! К тому же странно почему тогда в SysUtils mr.Borland сделал объявление typedef Set<char, 0, 255> TSysCharSet;
P.S. А насчет "кладется некоторое отрицательное число" я думаю, что это все-таки не так. Там (в множестве)должны просто переключаться соответствующие биты, поэтому оно и считается экономичным в смысле памяти.
Ты проверял? У меня все равно не работает! К тому же странно почему тогда в 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)'ж');
Проверял, у меня работает.
Спасибо, у меня ТЕПЕРЬ тоже работает. Но с утра определенно не работало...:-)
Тема