Registry Problem...



  • @ Any: das allerletzte in deinem Beitrag kan ich leider noch nich

    Was für hather nimst du CoolX ?

    Bei mir geht auch das MS-Beispiel nicht glaube das liegt an den falschen Hather-Dateien.



  • Bei mir kommt bei meinem Programm immer der Fehler

    error C2664: 'strlen' : Konvertierung des Parameters 1 von 'const unsigned char [17]' in 'const char *' nicht moeglich Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    

    Wie kann ich den umgehen und was bedeutet er eigentlich?



  • Du verwendest ein BYTE-Array, welches 8bit-Werte ohne Vorzeichen enthält als char-Zeiger, welches 8bit mit Vorzeichen entspricht.

    Die Lösung, char cString[] = "..." statt BYTE cString[] = "...", ist schon dreimal genannt worden.



  • Ja das wurde mehrfach gesagt aber wen ich char stat BYTE schreibe kommt der Fehler

    error C2664: 'RegSetValueExA' : Konvertierung des Parameters 5 von 'char [17]' in 'const unsigned char *' nicht moeglich
            Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    

    Was heist das jetzt wieder, ich hab das mit dem reinterpret_cast schon probiert aber warscheinlich falsch gemacht.

    reinterpret_cast< char* >( cString );
    

    aber warscheinlich ist das falsch weil dan kommt der gleiche Fehler. 😞



  • Du hast einen (signed) char[] und benötigst einen unsigned char* - damit dürfte doch wohl klar sein, in welche Richtung du casten mußt:

    reinterpret_cast< unsigned char* >( cString )
    

    (das mußt du btw als Argument deines RegSetValueEx() Aufrufes anstelle von "cString" eintragen)



  • Ok hab ich probiert :

    RegSetValueEx(hKey,"EintragsName",0,REG_SZ,reinterpret_cast< unsigned char* >( cString ),strlen(reinterpret_cast< unsigned char* >( cString ))+1);
    

    dan kommt der Fehler

    error C2664: 'strlen' : Konvertierung des Parameters 1 von 'unsigned char *' in 'const char *' nicht moeglich
            Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    

    Daraus schliest man ja das man in const char* casten muss:

    RegSetValueEx(hKey,"EintragsName",0,REG_SZ,reinterpret_cast< const char* >( cString ),strlen(reinterpret_cast< const char* >( cString ))+1);
    

    Doch dan kommt diser Fehler:

    error C2664: 'RegSetValueExA' : Konvertierung des Parameters 5 von 'const char *' in 'const unsigned char *' nicht moeglich
            Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    

    Darauf schreibe ich das:

    RegSetValueEx(hKey,"EintragsName",0,REG_SZ,reinterpret_cast< const unsigned char* >( cString ),strlen(reinterpret_cast< const unsigned char* >( cString ))+1);
    

    und trotzdem kommt das:

    error C2664: 'strlen' : Konvertierung des Parameters 1 von 'const unsigned char *' in 'const char *' nicht moeglich
            Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    

    Solangsam fühl ich mich von meinem Compiler verars...
    Ist der kaput oder warum kommt da son mist raus?



  • Gnah, RegSetValueEx will const unsigned char* und wenn du in diesen Typ castest, nimmt der Compiler das auch an. Die anderen Fehler beziehen sich auf strlen, das einen const char* haben will. Bis jetzt stocherst du immer nur mit den Typen rum und machst eins von beiden in jedem Fall falsch.



  • Ich will nicht nerfen , wie löse ich das?
    Kan mir fieleicht jemand einen Funktionierenden Quellcode geben? 🤡 bidde



  • RegSetValueEx(hKey,"EintragsName",0,REG_SZ,reinterpret_cast< const unsigned char* >( cString ),strlen(reinterpret_cast< const char* >( cString ))+1);
    


  • Jetzt gets ,Danke Danke Danke


Anmelden zum Antworten