C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
перечисления, работа с перечислениями
frofis
Отправлено: 17.03.2004, 16:48


Не зарегистрирован







в Delphi
hex = ['0'..'9', 'A'..'F'];
if not (str[i] in hex) then..
как это написать в CBuilder
Gedeon
Отправлено: 17.03.2004, 17:15


Ветеран

Группа: Модератор
Сообщений: 1742



Можно вот так, правда это не ответ на ваш вопрос, но будет работать, если условие не будет меняться.
CODE

AnsiString Simbols = "0123456789ABCDEF";
if(Simbols.AnsiPos("A")!=0){ /*тут в кавычках текст для сравнения не обязательно один символ*/
Beep(); // выполняется, если попадает в строку
}


Отредактировано Gedeon — 17/03/2004, 18:19
frofis
Отправлено: 17.03.2004, 17:20


Ученик-кочегар

Группа: Участник
Сообщений: 9



Дело в том что pos работаем очень медленно, а работа с множествами вроде бы на порядок быстрее
Doga
Отправлено: 17.03.2004, 17:45


Мастер участка

Группа: Участник
Сообщений: 575



#include

if (!isxdigit((int)str[i]))
{
...
}
frofis
Отправлено: 17.03.2004, 17:49


Ученик-кочегар

Группа: Участник
Сообщений: 9



Спасибо, но 16 числа я привел для примера, а нужно просто любое перечисление
Doga
Отправлено: 17.03.2004, 18:05


Мастер участка

Группа: Участник
Сообщений: 575



Так сразу бы так и говорил бы!

enum Hex
{
h0 = '0',
h1 = '1',
h2 = '2',
h3 = '3',
h4 = '4',
h5 = '5',
h6 = '6',
h7 = '7',
h8 = '8',
h9 = '9',
ha = 'a',
hb = 'b',
hc = 'c',
hd = 'd',
he = 'e',
hf = 'f',
hA = 'A',
hB = 'B',
hC = 'C',
hD = 'D',
hE = 'E',
hF = 'F'
};
typedef Set THex;

THex AHex;

AHex << h0 ... << hF;

if (!AHex.Contains((int)str[i]))
{
...
}
Doga
Отправлено: 17.03.2004, 18:08


Мастер участка

Группа: Участник
Сообщений: 575



Блин! Вместо

"typedef Set THex;"

должно быть

"typedef Set THex;"
Doga
Отправлено: 17.03.2004, 18:35


Мастер участка

Группа: Участник
Сообщений: 575



Да елы-палы!

Кароче:

typedef Set<> THex; ток знаки больше и меньше в одном экземпляре

Doga
Отправлено: 17.03.2004, 18:39


Мастер участка

Группа: Участник
Сообщений: 575



Где Админ?!!! Блин!!! Е....Ь!!!! Сюды его!!!! Шоб сам посмотрел!!!



typedef
Set
<
Hex,
h0,
hF
>
THex;
frofis
Отправлено: 17.03.2004, 20:41


Ученик-кочегар

Группа: Участник
Сообщений: 9



enum VaType {
h0 = '0',
h1 = '1',
h2 = '2',
h3 = '3',
h4 = '4',
h5 = '5',
h6 = '6',
h7 = '7',
h8 = '8',
h9 = '9',
ha = 'a',
hb = 'b',
hc = 'c',
hd = 'd',
he = 'e',
hf = 'f',
hA = 'A',
hB = 'B',
hC = 'C',
hD = 'D',
hE = 'E',
hF = 'F'
} VaVar ;

typedef Set TVa;

Не проходит — говорит
[C++ Error] Unit1.cpp(48): E2299 Cannot generate template specialization from 'Set'
[C++ Error] Unit1.cpp(48): E2040 Declaration terminated incorrectly

если вместо VaType поставить char, то работает
frofis
Отправлено: 17.03.2004, 20:44


Ученик-кочегар

Группа: Участник
Сообщений: 9



typedef Set\TVa
frofis
Отправлено: 17.03.2004, 20:48


Ученик-кочегар

Группа: Участник
Сообщений: 9



typedef
Set
<
VaType,
h0,
hF
>
TVa
Doga
Отправлено: 17.03.2004, 21:04


Мастер участка

Группа: Участник
Сообщений: 575



typedef Set{VaType,h0,hF}TVa

всё должно быть написано в одной строке типа как тут, ток фигурые скобочки замени на знаки "меньше" и "больше" .

По другому я написать не смог — тут какая то ###### с редактором <<проглотит>> sad.gif((
Удивлённый
Отправлено: 18.03.2004, 03:28


Не зарегистрирован







QUOTE

По другому я написать не смог — тут какая то ###### с редактором <<проглотит>> ((

А почему нельзя воспользоваться тегом [ Code ] (без пробелов между открывающейся и закрывающейся скобкой)?
Например
CODE

typedef Set<VaType,h0,hF>TVa

Специально для этого же сделан. biggrin.gif biggrin.gif biggrin.gif
frofis
Отправлено: 18.03.2004, 13:05


Ученик-кочегар

Группа: Участник
Сообщений: 9



Не проходит см. вложение

Присоединить изображение

Присоединить изображение


Вернуться в Вопросы программирования в C++Builder