Вниз
Скачать: CL | DM;

Можно ли индексированно обратиться к перечисляемому типу?   Найти похожие ветки 

← →
Ega23 ©   (2003-12-23 10:45) [0]

Type
TExecKind = (ekOpen, ekExec,ekCmd, ekApp, ekNone, ekInfo, ekHelp);

Писать функцию перевода? Но ведь наверняка внутри ekOpen=0, ekExec=1 и т.д.


← →
TUser ©   (2003-12-23 10:46) [1]

Писать функцию перевода.


← →
Skier ©   (2003-12-23 10:46) [2]


> ? Но ведь наверняка внутри ekOpen=0, ekExec=1 и т.д.

Угу.

А зачем тебе всё это ?


← →
Silver Alex ©   (2003-12-23 10:48) [3]

можно Ord(ekOpen), а если у тебя Delphi 7 вообще можно писать
TExecKind = (ekOpen=10, ekExec=23,ekCmd=34, ekApp=56, ekNone=78, ekInfo=81, ekHelp=99);


← →
Ega23 ©   (2003-12-23 10:48) [4]

Да если бы можно было, код красивше получался....
Ладно, спасибо.


← →
Ega23 ©   (2003-12-23 10:49) [5]


> можно Ord(ekOpen), а если у тебя Delphi 7 вообще можно писать
>
> TExecKind = (ekOpen=10, ekExec=23,ekCmd=34, ekApp=56, ekNone=78,
> ekInfo=81, ekHelp=99);

О! То что надо!


← →
wicked ©   (2003-12-23 10:51) [6]

или так
const values: array [TExecKind] of integer = (0, 1, 2, 3 etc)

кстати, очень часто в исходниках vcl встречается...


← →
Sandman25 ©   (2003-12-23 10:55) [7]

Кстати, можно и наоборот.
TExecKind(0) возвратит первый элемент типа.
Удобно при использовании компонентов с ItemIndex для выбора из списка.


← →
Dred2k ©   (2003-12-23 12:29) [8]

> Ega23 © (23.12.03 10:45)

Да можно. Приводи к типу и все. Почти как массив. ;)


uses TypInfo;

type
TExecKind = (ekOpen, ekExec,ekCmd, ekApp, ekNone, ekInfo, ekHelp);

procedure TForm1.Button1Click(Sender: TObject);
var tmp : TExecKind;
begin
tmp := TExecKind(5);
ShowMessage(GetEnumName(TypeInfo(TExecKind), Integer(tmp)));
end;


← →
PVOzerski ©   (2003-12-23 12:42) [9]

Я проще делаю: если знаю, что значения данного типа мне придется использовать в ариметических операциях, делаю его подмножеством целого, а возможные значения определяю как константы (а в сущности, и тип не нужен).

const
ekOpen=0;
ekExec=1;
ekCmd=2;
ekApp=3;
ekNone=4;
ekInfo=5;
ekHelp=6;
type
TExecKind=ekOpen..ekHelp;



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.016 c
9-25164
Солер
2003-06-25 16:43
2004.01.09
Карточные игры


1-25336
vidiv
2003-12-20 09:59
2004.01.09
RTF2HTML


4-25665
Скал
2003-11-05 18:30
2004.01.09
регионы RGN


14-25586
SergP
2003-12-17 22:56
2004.01.09
Как на PHP определить IP клиента?


14-25573
Alexander Vasjuk
2003-12-16 12:52
2004.01.09
Хакеры - санитары софта?




   Наверх