Typecasting-Schwierigkeiten
-
hi,
ich habe folgendes problem. ich programmiere (eigentlich unter linux) cpp mit den qt-libs von trolltech.
jetzt moechte ich aber das aktuelle prog auch portabel fuer windoze gestalten und habe deshalb folgende funktion geschrieben, die ueber RegQueryValueEx() aus der registry werte auslesen soll (ist nicht schoen gecoded, ich weiss - aber ich bastel mir gerade nen ast daran ab):
QString objPreferences::getValWin(QString strParam) { HKEY hKey = NULL; DWORD dwData=256; BYTE bData[256]=""; const unsigned short *chrSchluessel=TEXT("Software\\winboard\\wbreader"); /* hier hakt's: */ const unsigned short *chrParam=(LPCSTR)(char *)strParam; QString strVal; LONG rOpen = RegOpenKeyEx(HKEY_CURRENT_USER, chrSchluessel, NULL,KEY_READ, &hKey); if (rOpen != ERROR_SUCCESS) { return ""; } // wert auslesen if (RegQueryValueEx(hKey, chrParam, 0, 0, bData, &dwData)!=ERROR_SUCCESS) { return ""; } for (DWORD intZaehler=0; intZaehler<dwData;intZaehler++) { strVal=strVal + (char)bData[intZaehler]; } RegCloseKey(hKey); return strVal; } // function getValWin
ich habe das problem, dass ich meinen QString nach (const unsigned short casten muss, um im RegQueryValueEx() mit chrParam arbeiten zu koennen.
zweite schwierigkeit:
ich bekomme zwar den QString strVal mit dem ausgelesenen wert befuellt, der wird aber irgendwie nicht richtig zurueckgegeben. muss ich nach der fuellschleife den string noch mit NULL abschliessen?
tia
stefan
-
lass mal das const weg ? warum unsigned short, sollte es nicht char* sein ?
lässt sich qstring einfach in ein char* casten ?
-
ich muss einen const unsigned short fuer die RegQueryValueEx() haben - das casten von einem QString nach char* ist kein problem. nur von da weiter zum short komm ich nicht
-
dann probier mal einen normalen char pointer
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/regqueryvalueex.asp