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.