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


Автор: np9mi7 25.7.2005, 18:29
Добрый день.

Недавно начал работать с rs232, и для этого стал использовать компонент:

Код

+------------------------------------------+
| ComPort Library version 2.64             |
| for Delphi 3, 4, 5, 6, 7                 |
| and C++ Builder 3, 4, 5, 6               |
|                                          |
| by Dejan Crnila 1998-2002                |
| maintained by Lars Dybdahl 2003          |
| C++ Builder support by Paul Doland       |
+------------------------------------------+


Но вот незадача, при получении настроек rs232 порта библиотечной функции необходимо передать полное значение ключа ( вместе с HKEY, в строковом представлении).

Как? Пришла в голову мысль (первая, тупая, работающая на 100%) написать мега switch, не получиться, поскольку:

Код

typedef void* HKEY;


Если кастовать тоже никак.

Писать мега else if - некрасиво!!!

Хочеться спросить: как получить строковое представление HKEY стандартными средствами (API? или может что есть в VCL).

Заранее благодарен за помощь.

ps: тут ещё подвох в том, что количество значений принимаемых HKEY может измениться, и если писать самому, то придеться за этим следить, а если стандартное то не придеться, просто пересабрать и все;

Автор: chaos 26.7.2005, 12:13
посмотри на это чудо RegQueryInfoKey может поможет
Добавлено @ 12:18
или поройся сдесь winreg.h
а вообще чето-то я не допонимаю вопроса smile
поясни: что есть что должно получиться

Автор: chaos 26.7.2005, 12:24
а хотя о чем я вообще
Цитата

#define HKEY_CLASSES_ROOT          (( HKEY ) 0x80000000 )
#define HKEY_CURRENT_USER          (( HKEY ) 0x80000001 )
#define HKEY_LOCAL_MACHINE          (( HKEY ) 0x80000002 )
#define HKEY_USERS                  (( HKEY ) 0x80000003 )
#define HKEY_PERFORMANCE_DATA      (( HKEY ) 0x80000004 )
#if(WINVER >= 0x0400)
#define HKEY_CURRENT_CONFIG        (( HKEY ) 0x80000005 )
#define HKEY_DYN_DATA              (( HKEY ) 0x80000006 )

вот твои HKEY'и. и че те сложно написать максимум 7 ифов?

Автор: np9mi7 26.7.2005, 13:04
не сложно, просто хотелось стандартной функцией, это то я уже написал:
Код

    //-----------------------------------------------------------------------
    if ( hdlRootKey == HKEY_CLASSES_ROOT)
    {
     //-------------------------------------------------------------------
        return TEXT("HKEY_CLASSES_ROOT");
    } 
    else if ( hdlRootKey == HKEY_CURRENT_CONFIG)
    {
     //-------------------------------------------------------------------
        return TEXT("HKEY_CURRENT_CONFIG");
    }
    else if ( hdlRootKey == HKEY_CURRENT_USER)
    {
     //-------------------------------------------------------------------
     return TEXT("HKEY_CURRENT_USER");
    }
    else if ( hdlRootKey == HKEY_DYN_DATA)
    {
     //-------------------------------------------------------------------
     return TEXT("HKEY_DYN_DATA");
    }
    else if ( hdlRootKey == HKEY_LOCAL_MACHINE)
    {
     //-------------------------------------------------------------------
     return TEXT("HKEY_LOCAL_MACHINE");
    }
    else if ( hdlRootKey == HKEY_PERFORMANCE_DATA)
    {
     //-------------------------------------------------------------------
     return TEXT("HKEY_PERFORMANCE_DATA");
    }
    else if ( hdlRootKey == HKEY_PERFORMANCE_NLSTEXT)
    {
     //-------------------------------------------------------------------
     return TEXT("HKEY_PERFORMANCE_NLSTEXT");
    }
    else if ( hdlRootKey == HKEY_PERFORMANCE_TEXT)
    {
     //-------------------------------------------------------------------
     return TEXT("HKEY_PERFORMANCE_TEXT");
    }
    else if ( hdlRootKey == HKEY_USERS)
    {
     //-------------------------------------------------------------------
     return TEXT("HKEY_USERS");
    }
    //-----------------------------------------------------------------------
    _ASSERT ( false);
    //-----------------------------------------------------------------------

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