Registry Problem...



  • Cool X schrieb:

    Also ich habs mal mit Borland kompiliert und bei mir funzt das so einwandfrei.

    Bei Borland ist char wohl unsigned char, dann geht das auch, aber wenn bei einem Compiler char signed char ist, dann muss man hier umwandeln.
    Also entweder statt BYTE char verwenden, oder nen reinterpret_cast< char* >( cString )



  • @ 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