Wert aus Registry lesen unter VS2008



  • Hi,

    ich möchte einen Wert aus der Registry lesen. Ich erhalte bei diesem Code
    jedoch den Hinweis, dass ich LPTSTR verwenden soll, sobald ich QueryValue aufrufe.
    Auch muss ich dieses T-Macro verwenden. Warum ist das so?
    Warum wurde das dahingehend verändert?

    Darf ich denn kein "char" mehr wie gewohnt verwenden?

    CRegKey keyx; 
    	char bufferx[256]; 
    	DWORD dwCountx = sizeof( bufferx); 
    	keyx.Open( HKEY_CURRENT_USER, _T("SOFTWARE\\TEST"), KEY_READ); 
    	keyx.QueryValue( bufferx, _T("StringEintrag"), &dwCountx); //<---Hier für bufferx nun (LPTSTR)bufferx verwenden...
    	keyx.Close();
    


  • Wenn Du bei der Erstellung des Projektes die Benutzung von Unicode explizit ausgeschaltet hast, dann sollte Dein Code keine Probleme bereiten.



  • Hi jencas,

    hmm, mein Code funktioniert jetzt auch so wie oben beschrieben mit (LPSTR)bufferx,
    allerdings ist der Eintrag in der Registry folgender "D:\MeinPfad".

    Ich erhalte jedoch nur "D". Der char wandert in einen CString.
    Das mache ich ganz simpel mit

    CString x = bufferx
    

    Dabei geht wohl alles bis auf einen Char flöten 😕

    In alten Projekten hat es so unter VS2003 immer funktioniert.
    Was um Himmels willen hab ich nun wieder falsch zusammengeschustert?



  • Sorry für den Nachtrag, aber ich habe jetzt Unicode mal ersetzt durch
    Multi-Byte-Zeichensatz verwenden (unter Zeichensatz).

    Was ich noch immer nicht begreife ist, dass eine CString-Zuweisung nicht
    greift:

    CString xy = "Hallo ";
    CString ab = "Welt";
    
    xy+=ab;
    MessageBox(xy);
    
    //Sollte "Hallo Welt" ergeben, es wird jedoch nur der Wert "Hallo" ausgegeben!
    

Anmelden zum Antworten