Problem bei string in registry schreiben



  • Hallo, ich habe diesen Code hauptsächlich aus dem FAQ übernommen. Wenn ich das Programm kompiliere kommt diese Fehlermeldung:
    E2034 Cannot convert 'AnsiString' to 'unsigned char[]'

    AnsiString filename;
    
    OpenDialog1->Execute();
    filename=OpenDialog1->FileName;
    
    HKEY hKey;
    RegCreateKeyEx(HKEY_CURRENT_USER,"Test",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,0);
    
    BYTE cString[] = filename;
    
    RegSetValueEx(hKey,"EintragsName",0,REG_SZ,cString,strlen(cString)+1);  
    
    RegCloseKey(hKey);
    

    Das Programm funktioniert einwandfrei wenn ich Zeile 6 z.B. damit ersetze:

    BYTE cString[] = "test";
    

    Hat jemand eine Idee wie man mein Problem lösen könnte?

    MfG eppert



  • Erstens brauchst du die Methode c_str() (oder vergleichbares) um aus einem String-Objekt auf seine char*-Daten zugreifen zu können.

    Zweitens funktioniert die Konstruktion "char str[] = ..." (afaik) nur mit String-Literalen, die der Compiler bereits auswerten kann (der Compiler will schließlich wissen, wie groß das Array werden soll).

    Und drittens brauchst du das char-Array als Zwischenspeicher überhaupt nicht:

    RegSetValueEx(hKey,"EintragsName",0,REG_SZ,filename.c_str(),filename.length()+1);
    


  • danke, es funktioniert.


Anmelden zum Antworten