Wie konvertiert man von 'BYTE [9]' in 'char *'?
-
Wie geht es richtig? Ich habe schon einiges Versucht, hier der bisher beste Versuch:
CString strDatum = COleDateTime::GetCurrentTime().Format("%Y%m%d"); BYTE cString[]="YYYYMMDD"; sprintf(cString, _T("%s"), strDatum); RegSetValueEx(hKey,"Database_Version",0,REG_SZ,cString,strlen(cString)+1);
Das BYTE durch ein char ersetzen hilft nicht. Und dem RegSetValueEx einen CString anbieten schlägt auch fehl.
-
Fehlerbeschreibung?
-
error C2664: 'sprintf': Konvertierung des Parameters 1 von 'BYTE [9]' in 'char *' nicht möglich error C2664: 'strlen': Konvertierung des Parameters 1 von 'BYTE [9]' in 'const char *' nicht möglich
-
Nimm doch ein char-Array und caste es beim Aufruf von RegSetValueEx nach LPBYTE
-
da wo Byte steht´char *cString und beim aufruf mal nur mit &cString
????
-
Das von cast hat funktioniert, danke!
-
estartu_de schrieb:
sprintf(cString, _T("%s"), strDatum); RegSetValueEx(hKey,"Database_Version",0,REG_SZ,cString,strlen(cString)+1);
sprintf ist eine reine ANSI Version, _T macht hier keinen Sinn. Also weg damit. Bei RegSetValueEx ist das genau andersrum, also 2. Parameter mit _T("Database_Version") ersetzen.
-
groovemaster schrieb:
sprintf ist eine reine ANSI Version, _T macht hier keinen Sinn. Also weg damit.
Und wie kriege ich mein Datum in die Registry?
Wenn ich da einen CString reinstecken will motzt der auch.
-
groovemaster meint du sollst wsprintf verwenden. mit sprintf macht das _T keinen Sinn.
Und wegen CString: reinterpret_cast<LPBYTE>(str.GetBuffer())
-
Jetzt habe ich das verstanden.
Ich habe jetzt das und es funktioniert:
CString strDatum = COleDateTime::GetCurrentTime().Format("%Y%m%d"); RegSetValueEx(hKey,"Database_Version",0,REG_SZ,reinterpret_cast<LPBYTE>(strDatum.GetBuffer()),strDatum.GetLength()+1);