Wo ist der Fehler ??



  • Hi,
    wenn ich kompiliere, kommen folgende Fehlermeldungen:

    :\eigene dateien\test sourcecodes\registry\super_reg\reg_functions.h(230) : error C2664: 'strlen' : Konvertierung des Parameters 1 von 'char' in 'const char *' nicht moeglich
    Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    c:\eigene dateien\test sourcecodes\registry\super_reg\reg_functions.h(231) : error C2664: 'strlen' : Konvertierung des Parameters 1 von 'char' in 'const char *' nicht moeglich
    Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    Fehler beim Ausführen von cl.exe.

    Die Variablendeklarationen, die den Fehler vermutlich verursachen

    char RegPath5[MAX_PATH] = "Control Panel\\Desktop";
    char* TileWallp = 0;
    char* WallpStyl = 0;
    char* BmpLocation = "C:\\windows\\alicia.bmp";
    

    Wenn ich die Fehler anklcike, springt er zu den Zeilen, die mit //X markiert sind

    RegOpenKey(HKEY_CURRENT_USER,RegPath5,&hKey);
    
    RegSetValueEx(hKey,"TileWallpaper",0,REG_SZ,(BYTE*)TileWallp,strlen(TileWallp)+1);//X
    RegSetValueEx(hKey,"WallpaperStyle",0,REG_SZ,(BYTE*)WallpStyl,strlen(WallpStyl)+1);//X
    RegSetValueEx(hKey,"Wallpaper",0,REG_SZ,(BYTE*)BmpLocation,strlen(BmpLocation)+1);
    

    Ich verstehe nicht, was er dagegen hat, denn die letze Zeile führt er ja auch ohne
    ärger zu machen aus....

    Bitte helft mir,

    DANKE



  • Ups, hab was übersehen...
    sorry...



  • Das sind ja auch beides keine gültigen char-Pointer, sondern NULL-Pointer... Nur warum der Compiler da schon meckert und es nicht es beim Ausführen einen Fehler gibt ist mir nicht ganz klar, denn eigentlich sind es ja char-Pointer (vom Typ her)



  • mhh aber das merkwürdigste ist ja, das es bei der letzten zeile, wo ich den wert auf c:\windows\alicia.bmp setze es keine probleme gibt....

    wie könnte also eine mögliche Lösung aussehen ??



  • Was soll überhaupt der RegSetValueEx Aufruf? Willst du den Inhalt des Schlüssels löschen? Dann nimm einfach "".



  • Ich würde gerne die beiden Einträge
    HKEY_CURRENT_USER\Control Panel\Desktop\TileWallpaper (1)
    HKEY_CURRENT_USER\Control Panel\Desktop\WallpaperStyle (2)

    auf Null (0) setzen, sie sind vom Typ Zeichenfolge und ihren aktuellen
    zustand habe ich mal in () dahinter geschrieben !!

    leider funktioniert es nicht....



  • Willst du es auf einen leeren String setzen, dann "" - bei 0 eben dann wohl "0" 😉



  • OK hat sich erledigt 🙂
    😃 Fehler war bei den variablendeklarationen !!

    char* TileWallp = 0; 
    char* WallpStyl = 0;
    

    hätte es so machen müssen !!

    char* TileWallp = "0"; 
    char* WallpStyl = "0";
    

    Trotzdem betsen dank !!!



  • Danke @flenders, hatte den Fehler grade selber gefunden und den Post reingesetzt, dann sah ich nach der aktualisierung meiners browsers ,
    deine antwort, die gleiches beinhaltet !!

    Hab den Fehler aber selbst auch bemerkt 😃 *STOLZ* 😃

    DANK


Anmelden zum Antworten