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

Ваш аккаунт

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

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

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

Есть ли в С++ подобие in.

295
18 декабря 2002 года
gray_k
356 / / 20.12.1999
В паскале можно реализовать так:
if MyVay in [Val1,Val2,...,Valn] then
Можно ли что-то подобное сделать в С++
317
19 декабря 2002 года
Relax
573 / / 20.09.2000
прямо так не получится... есть тип такая вещь - Set - работает так:

typedef Set<char,'a','z'> LowerSet;
LowerSet ae; // объявление набора
ae << 'a' // занесение в набор
ae >> 'a' // удаление из набора
if(ae.Contains('a')) // проверка наличия
{

}
через такой механизм реализованы многие свойства в VCL, например, свойства шрифта...
295
19 декабря 2002 года
gray_k
356 / / 20.12.1999
Цитата:
Originally posted by Relax
прямо так не получится... есть тип такая вещь - Set - работает так:

typedef Set<char,'a','z'> LowerSet;
LowerSet ae; // объявление набора
ae << 'a' // занесение в набор
ae >> 'a' // удаление из набора
if(ae.Contains('a')) // проверка наличия
{

}
через такой механизм реализованы многие свойства в VCL, например, свойства шрифта...


Мне надо, чтобы в Edit можно было печатать только цифры.
Нашёл пример:
void __fastcall TFormSound::Edit1KeyPress(TObject *Sender, char &Key)
{
Set <char, '0','9'> Dig;
Dig << '0' << '1' << '2' << '3' << '4' << '5' << '6' << '7'
<< '8' << '9';
if (!Dig.Contains(Key))
{
Key = 0;
Beep();
}
}
Но этот обработчик не позволяет юзеру стирать цфры бэкспейсом или делетом. Как это обойти. При нажатии Backspace параметр Key принимает значение '\b'. Как го поместить в поток?

317
19 декабря 2002 года
Relax
573 / / 20.09.2000
так бы сразу и сказал :) - тогда еще проще:

void __fastcall TForm1::ComboBox1KeyPress(TObject *Sender, char &Key)
{
if((Key - '0' > 9 || Key - '0' < 0) && Key != '\b')
Key = 0;
}
3
19 декабря 2002 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Relax
так бы сразу и сказал :) - тогда еще проще:

void __fastcall TForm1::ComboBox1KeyPress(TObject *Sender, char &Key)
{
if((Key - '0' > 9 || Key - '0' < 0) && Key != '\b')
Key = 0;
}



А isdigit теперь уже не модно?:D

317
19 декабря 2002 года
Relax
573 / / 20.09.2000
точно! isdigit! но она все равно тем же самым занимается :)...
второе условие все равно добавлять придется, а вместо первого условия можно и isdigit поставить, хотя так все-таки немного быстрее, по-моему, - не тратится время на вызов функции и возвращение значения, но это не принципиально...
295
19 декабря 2002 года
gray_k
356 / / 20.12.1999
Цитата:
Originally posted by Relax
точно! isdigit! но она все равно тем же самым занимается :)...
второе условие все равно добавлять придется, а вместо первого условия можно и isdigit поставить, хотя так все-таки немного быстрее, по-моему, - не тратится время на вызов функции и возвращение значения, но это не принципиально...


всем спасибо. Но вопрос остаётся. Можно как нибудь в множество Dig(см. выше) Занести значение, чтобы при нажатии Backspace Dig.Contains(Key) возвращал истину? Чистое любопытство, может потом пригодится,

317
19 декабря 2002 года
Relax
573 / / 20.09.2000
так и помести: << '\b' - это ведь как бы тоже символ...
295
20 декабря 2002 года
gray_k
356 / / 20.12.1999
Цитата:
Originally posted by Relax
так и помести: << '\b' - это ведь как бы тоже символ...


Пробовал - не получается. Слэш - это же управляющий символ.

317
20 декабря 2002 года
Relax
573 / / 20.09.2000
это не важно - в данном случае '\b' интерпретируется как символ, его числовое выражение - 8. не получается по другой причине -
в Set передаются первый и последний элемент, которые ограничивают диапазон величин, которые могут входить в Set, поэтому надо подкорректировать объявление:
было: Set <char, '0','9'> Dig;
стало: Set <char, '\b','9'> Dig;
а дальше все также, только добавляем '\b':
Dig << '0' << '1' << '2' << '3' << '4' << '5' << '6' << '7' << '8' << '9' << '\b';

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