Warum kann ich nicht einen größeren Wert als 9 aus der Registry auslesen?



  • Warum kann ich mit folgendem Code keinen Wert aus der Reg auslesen der größer ist als 9?

    key.Open(HKEY_CURRENT_USER, "Software\\AK", KEY_READ);
    	key.QueryValue(buffer, "Muellpreis", &dwCount);
    	key.Close();
    	m_Waste = atof(buffer);
    
    	UpdateData(FALSE);
    

    Gruß
    andreas



  • Kann mir da keiner helfen?



  • Was ist buffer?
    Was ist m_Waste?
    Was steht in dem Registrywert?
    Was gibt Open zurück?
    Was gibt QueryValue zurück?
    Was steht vor dem Aufruf von QueryValue in dwCount?
    Was steht nach dem Aufruf von QueryValue in dwCount?
    Was steht nach dem Aufruf von QueryValue in buffer?

    Warum wunderst du dich, dass dir niemand antwortet, wenn man dir die wichtigen Informationen aus der Nase ziehen muss?



  • ..warum nimmst du nicht QueryValueEx?



  • hi

    kann queryvlaueex nicht nehmen, da ich diese Funktion nicht hab? Weis auch net warum hab den aktuellen Servicepack aufgespielt?

    void CMietView::OnChangeStromPubNew() 
    {
    	CRegKey key;
    
    	UpdateData(TRUE);
    	m_PubKwh = m_StromPubNew - m_StromPubOld;
    
    	//Preis pro kw/h aus reg auslesen
    	char buffer[256];
    	DWORD dwCount = sizeof(buffer);
    	double v;
    
    	key.Open(HKEY_CURRENT_USER, "Software\\AK", KEY_READ);
    	key.QueryValue(buffer, "Strompreis", &dwCount);
    	key.Close();
    	v = atof(buffer);
    
    	//Perosnenanzahl aus Registry auslesen
    	CString str;
    
    	str = "Software\\AK\\Data\\";
    	str += m_strName;
    	int pers;
    
    	key.Open(HKEY_CURRENT_USER, str, KEY_READ);
    	key.QueryValue(buffer, "Pers", &dwCount);
    	key.Close();
    	pers = atoi(buffer);
    	m_PubKwh =  (m_PubKwh / 6) * pers;
    
    	//Summe brechnen
    	m_SumStrom = ((m_kwh + m_PubKwh) * v) + (((m_kwh + m_PubKwh) * v) * 0.07);
    	m_SumStrom += 19.94;
    
    	//Müllpreis mit updaten
    	key.Open(HKEY_CURRENT_USER, "Software\\AK", KEY_READ);
    	key.QueryValue(buffer, "Muellpreis", &dwCount);
    	key.Close();
    	m_Waste = atof(buffer);
    
    	UpdateData(FALSE);
    }double m_Waste
    

    Funktioniert mit allen Kommawerten unter 10 ab dann kann er nicht mehr lesen!



  • Du musst dwCount vor jedem QueryValue auf sizeof(buffer) setzen, weil da die Anzahl der gelesenen Bytes reingeschrieben wird.



  • DAnke funktioniert!!!


Anmelden zum Antworten