Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Строковое значения enum-переменной


Автор: Vyacheslav 28.5.2002, 18:05
Значение переменной, имееющий тип enum можно получить в символьном виде с помощью функций GetEnumName  и GetEnumValue (TypInfo.hpp). Для этого необходимо иметь Typinfo::PTypeInfo. Значение можно получить, если данный enum уже был задействован в опубликованных свойствах (published property) зарегистрированного VCL класса. Вот как, например, можно преобразовать переменную типа TWindowState в AnsiString и обратно.
Код

#include <TypInfo.hpp>

TWindowState EnumValue = wsMinimized;
AnsiString strEnumValue;

Typinfo::PTypeInfo  pTypeInfo =
        *(Typinfo::GetPropInfo(__typeinfo(TForm),"WindowState"))->PropType;
//переводим enum в символьный вид;
strEnumValue = GetEnumName(pTypeInfo, EnumValue ));
// сейчас strEnumValue содержит "wsMinimized"
//а теперь обратно
strEnumValue = "wsMaximized";
EnumValue = (TWindowState)GetEnumValue(pTypeInfo,strEnumValue);


В данном случае для получения необходимой информации  воспользовались тем фактом, что данный тип уже был применен в TForm в опубликованном свойстве WindowState. Кстати, если попытаться воспользоваться TCustomForm будет сгенерировано исключение. Там тоже есть свойстdо  WindowState, но оно не опубликовано.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)