2014-02-14 4 views
1

Возможно ли иметь постоянный набор всех элементов перечисляемого типа в Delphi?Константа со всеми элементами перечисления в Delphi

type 
    TItems = (
     iOne, 
     iTwo, 
     iThree 
    ); 

    TItemsSet = set of TItems; 

const 
    SOMEITEMS: TItemsSet = [iTwo, iThree]; 


    ALLITEMS: TItemsSet = ????? 

Я бы хотел, чтобы ALLITEMS всегда держал всех членов TItems. И я предпочел бы, чтобы это было постоянным.

Отредактировано: А что, если мой перечисление выглядит следующим образом:

TItems = (
    iOne = 1, 
    iTwo = 2, 
    iThree = 5 
); 
+3

'[Низкий (TItems) .. Высокий (TItems)]'? – hvd

+0

@hvd Очевидно .. извините, я пропустил это. –

ответ

5

(Из комментариев)

[Low(T)..High(T)] работ для любого типа T, который достаточно мал, чтобы использовать в качестве set, чтобы включить все элементы, которые могут быть включены в набор.

Как отмечено в комментариях, этого достаточно для перечисления в вопросе, но в целом могут включать в себя константы, которые не определены как часть перечисления.

+1

Является ли Delphi достаточно умным, чтобы справиться с этой ситуацией: 'TItems = (iOne = 1, iTwo = 2, iThree = 5);'? –

+1

@AloisHeimer Теперь протестировано: 'набор TItems' будет иметь место для' iOne', 'iTwo',' TItems (3) ',' TItems (4) 'и' iThree'. '[Low (TItems) .. High (TItems)]' будет включать все пять из них, а не только те, у которых есть имена. – hvd

Смежные вопросы