Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.09;
Скачать: 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 вся ветка

Текущий архив: 2004.01.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
1-25339
Mip
2003-12-22 10:02
2004.01.09
Помогите плз. разобраться с Word


1-25367
sanilo
2003-12-25 16:42
2004.01.09
Windows XP & Shell


1-25398
hfa
2003-12-24 16:45
2004.01.09
Доброе время суток мастера! Подскажите как написать простой exe


6-25464
MyNickName
2003-11-09 09:30
2004.01.09
Перекодировка темы и текста сообщения.


14-25532
reticon
2003-12-19 11:01
2004.01.09
Кто-нибудь еще помнит язык ДОСа?