Главная страница
    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.01 c
6-25486
shItaSS
2003-11-06 12:13
2004.01.09
Как программно опредилить в локалке комп или нет


9-25178
Дмитрий К.
2003-06-20 16:55
2004.01.09
Сохранение изображения текущей сцены OpenGL


3-25201
Юлиана
2003-12-12 07:34
2004.01.09
Как загрузить рисунок в базу данных?


1-25394
npAKTuk
2003-12-24 20:41
2004.01.09
Проблема в работе с файлами


3-25254
zzzrrv
2003-12-10 11:40
2004.01.09
SQL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский