Показать сообщение отдельно
Старый 05.08.2011, 20:07   #11  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Кстати, для 2009-й джобик будет чуть чуть другим.
Оформил в виде метода для Global
X++:
// [url=http://axforum.info/forums/showthread.php?p=97771#post97771]Как получить из элемента enum-а код типа (enum-а)?[/url]
  // pkoz 27.02.2008
static EnumId GRD_GetEnumId(AnyType enum)
{
    ContainerClass  contClass;
    str             sEnum;
    EnumId          enumId = 0;
    ;
    if (typeOf(enum) != Types::Enum)
        return 0;

    contClass = New ContainerClass([enum]);
    sEnum = BinData::dataToString(contClass.toBlob());
//    if (sEnum && strlen(sEnum) == 12)
    if (sEnum && strlen(sEnum) == 14) //+переход на 2009-ю // pkoz 05.08.2011
    {
//        if (hex2int(substr(sEnum, 1, 2)) == 0x07 && hex2int(substr(sEnum, 3, 2)) == 0x04)
        if (hex2int(substr(sEnum, 1, 2)) == 0x07 && hex2int(substr(sEnum, 5, 2)) == 0x04) //+переход на 2009-ю // pkoz 05.08.2011
        {
//            enumId = (hex2int(substr(sEnum, 9, 2)) << 8) | hex2int(substr(sEnum, 7, 2));
            enumId = (hex2int(substr(sEnum, 11, 2)) << 8) | hex2int(substr(sEnum, 9, 2)); //+переход на 2009-ю // pkoz 05.08.2011
        }
    }
    return enumId;
}
За это сообщение автора поблагодарили: gl00mie (3).