Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Строковое значения enum-переменной, Преобразование  AnsiString <-> enum 
:(
    Опции темы
Vyacheslav
Дата 28.5.2002, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Значение переменной, имееющий тип 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, но оно не опубликовано.


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0639 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.