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.