Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.01.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.012 c
1-25403
Sirakuz
2003-12-24 18:13
2004.01.09
Поведение OwnerDrawVariable ListBox при докировании


14-25572
barbi
2003-12-18 10:31
2004.01.09
Вопросы президенту


4-25669
reef
2003-11-07 16:32
2004.01.09
WriteFile и 1Mb массив


1-25370
Sandman25
2003-12-25 11:27
2004.01.09
Инфо по RTTI


1-25296
AlexDBases
2003-12-23 10:56
2004.01.09
TTreeView. Отслеживаем изменение состояние узла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский