![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как элемент пречисления записать в строку? [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;