RegEnumValue



  • Hallo zusammen habe ein Problem mit der WINAPI-Funktion RegEnumValue ich habe sie in einer Klassen-Methode folgendermassen definiert :

    bool TRegClass::getEnumValue( AnsiString &sKeyName,
    int &iValueType,
    AnsiString &sValue )
    {
    bool bReturn = true;
    DWORD dwSize = 5250;
    DWORD dwBuffSize = 250;
    DWORD dwBuff;
    DWORD dwValueType;
    char cData;
    cData = new char [dwBuffSize];
    AnsiString sRcKeyName = sKeyName.SetLength(dwSize);
    long lCheck = RegEnumValue( hRcKey,
    iRcEnumValueIndex,
    sRcKeyName.c_str(),
    &dwSize,
    NULL,
    &dwValueType,
    (BYTE
    )cData,
    &dwBuffSize );

    sKeyName = sRcKeyName;
    iValueType = dwValueType;
    sValue = cData;
    delete [] cData;
    iRcEnumValueIndex++;

    if( lCheck == ERROR_NO_MORE_ITEMS || lCheck != ERROR_SUCCESS)
    {
    bReturn = false;
    iRcEnumValueIndex = 0;
    }
    return bReturn;
    }

    Wenn ich jetzt die Methode aufrufe z.B. im C++ Builder :

    do
    {
    // Anzahl Seriele Schnittstellen ermitteln
    ConnectionDialogRegClass->getEnumValue( sKey,
    iType,
    sValue );
    // Schlüsseldaten in Vectoren Speichern
    sVeKey.push_back(sKey);
    iVeType.push_back(iType);
    sVeValue.push_back(sValue);
    iVeIndex.push_back(index);
    index++;
    }while( ConnectionDialogRegClass->getEnumValue( sKey,
    iType,
    sValue ) );

    Werden nicht immer alle Unterschlüssel eines Schlüssels ermittelt;
    Was habe ich falsch gemacht?



  • Kann gut sein, daß ich nicht richtig gucken kann, aber das hier kommt mir doch komisch vor:

    do
    {
        // Anzahl Seriele Schnittstellen ermitteln
        ConnectionDialogRegClass->getEnumValue(sKey, iType, sValue);
        .
        .
        .
    }while(ConnectionDialogRegClass->getEnumValue(sKey, iType, sValue));
    

    Du meinst doch bestimmt das hier:

    while(ConnectionDialogRegClass->getEnumValue(sKey, iType, sValue))
    {
        .
        .
        .
    }
    

    Und beim nächsten Mal bitte Code-Tags verwenden:
    http://www.c-plusplus.net/ubb/cgi-bin/ultimatebb.cgi?ubb=ubb_code_page



  • vielen Dank für den Tip. Es war das Problem.


Anmelden zum Antworten