Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как элемент пречисления записать в строку? [D5, XP]


De ©   (2006-02-26 16:01:00) 

eEnum = (e_A, e_B, e_C);
...
s : string;
...
s := InToStr(e_B); - ?

Как это сделать?


palva   (2006-02-26 16:57:00) [1]

Кто бы мог подумать!


Джо   (2006-02-26 16:51:00) [2]

> [9] begin...end ©   (26.02.06 16:44)

И вам спасибо.


Джо   (2006-02-26 16:48:00) [3]

Да, действительно, вот так работает:
ShowMessage(GetEnumName(TypeInfo (eEnum),Integer(MyEnum)));


Джо   (2006-02-26 16:46:00) [4]

> [6] Джо ©   (26.02.06 16:35)

Ответ [5] MBo прочитал как GetEnum Prop, отсюда и мой ответ по поводу свойств. О GetEnum Nameне знал, спасибо MBo.


begin...end   (2006-02-26 16:44:00) [5]

> Джо ©   (26.02.06 16:40) [8]

Спасибо.

type
 TMyEnum = (E1, E2);

var
 I: Integer;
 Info: PTypeInfo;
begin
 Info := PTypeInfo(TypeInfo(TMyEnum));
 with GetTypeData(Info)^ do
   for I := MinValue to MaxValue do
     ShowMessage(GetEnumName(Info, I))
end


Джо   (2006-02-26 16:40:00) [6]

> [7] begin...end ©   (26.02.06 16:39)
> Ой.

Вы хотите о чем-то поговорить? Говорите.


begin...end   (2006-02-26 16:39:00) [7]

> Джо ©   (26.02.06 16:35) [6]

> При соблюдении следующего: значение перечисления должно
> храниться в published-свойстве класса с включенной генерацией
> run-time type information ($M+) или его наследника.

Ой.


Джо   (2006-02-26 16:35:00) [8]

> [5] MBo ©   (26.02.06 16:29)
> uses typinfo
> GetEnumName

При соблюдении следующего: значение перечисления должно храниться в published-свойстве класса с включенной генерацией run-time type information ($M+) или его наследника.

Иначе, см.:
>palva ©  
> Эти идентификаторы в откомпилированной программе не сохраняются.


MBo   (2006-02-26 16:29:00) [9]

uses typinfo
GetEnumName


begin...end   (2006-02-26 16:14:00) [10]

> palva ©   (26.02.06 16:05) [1]
> Эти идентификаторы в откомпилированной программе не сохраняются.

Ой.


Сергей М.   (2006-02-26 16:08:00) [11]


> s := InToStr(e_B); - ?
> Как это сделать?


Кверху.

s := IntToStr(Integer(e_B));


palva   (2006-02-26 16:05:00) [12]

Если для числового значения, то
s := IntToStr(Ord(e_B));
Если вы хотите вытащить сам идентификатор, то никак. Эти идентификаторы в откомпилированной программе не сохраняются.


unknown   (2006-02-26 16:05:00) [13]

case Enum of
 e_A:s:='e_A';
 e_B:s:='e_B';
 e_C:s:='e_C';
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо