DWORD in CString konvertieren und im Edit ausgeben
-
Halli Hallo!
Bin noch ein Anfänger in Sachen C++ und habe daher folgendes Problem:
Ich habe einen Eintrag in der Registry gemacht
DWORD dwPort; HKEY hKeyServerPort; UpdateData(); dwPort = atol(m_strEditPort); RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Metex\\ServerConf",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKeyServerPort,0); RegSetValueEx(hKeyServerPort, "Port",0 ,REG_DWORD, (BYTE*)&dwPort, sizeof(DWORD)); RegCloseKey(hKeyServerPort);
Jetzt will ich das ganze wieder auslesen und in das EditFeld meines Dialogs schreiben
CServerConf dlg; HKEY hKeyServerPort; DWORD dwReg, dwPort = 256; BYTE cDaten[256] = ""; RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Metex\\ServerConf", 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKeyServerPort, 0); dwReg = RegQueryValueEx(hKeyServerPort,"Port",0,0,cDaten,&dwPort); dlg.m_strEditPort.Format("%d", dwReg); dlg.DoModal();
In meinem EditFeld steht jedoch immer nur der Wert 2. Ich vermute, dass mein Problem in der Verwendung des Format-Befehls liegt (kurze Erläuterung wäre nett).
Ich habe schon fast alle Einträge im Forum im bezug auf die Registry/Formatfunktion gelesen, aber jetzt weis ich leider nicht mehr weiter.Vielen Dank schonmal für eure Hilfe!
Gruß
Chris
-
dlg.m_strEditPort.Format("%d", dwReg);
Kein wunder steht im Edit nur 2, du schreibst ja auch nichts weiter als 2 rein.
z.B. mitdlg.m_strEditPort.Format("Port: %d", dwReg);
Würdest du dann Port: 2 kriegen, oder was auch immer du willst.
CString::Format() -> MSDNMfG me
-
DarkAzReaL schrieb:
In meinem EditFeld steht jedoch immer nur der Wert 2. Ich vermute, dass mein Problem in der Verwendung des Format-Befehls liegt (kurze Erläuterung wäre nett).
Naja, es kommt darauf an was für einen Wert du erwartest. Denn %d liefert dir ein Integer. Ich glaube du solltest %s benutzen...
%d - Int
%lg - long
%hd - short
%f - float
%lf - double
%c - char
%s - String (char*)Gruß
:: NoName ::
-
DarkAzReaL schrieb:
DWORD dwReg, dwPort = 256; //... dlg.m_strEditPort.Format("%d", dwReg); //...
MSDN schrieb:
DWORD = 32-bit unsigned integer
wenn ich das recht verstehe, versucht er tatsächlich, ne Dezimalzahl in den String zu schreiben
MfG me
-
Ich hab mir sein Code nicht angesehen ... *faulheit*
Gruß
:: NoName ::
-
stimmt... hast recht. Langsam bin ich echt am verzweifeln. Vielleicht könnte mir jmd. meinen Fehler im Quelltext zu korrigieren oder mir einen Ansatz geben.
Falls Ihr ncoh informationen braucht könnt ihr mir auch gerne im ICQ schreiben (143668690)!Vielen Dank!!!
-
Okay, hab mir mal dein Code angesehen. Du möchtest doch eine Zahl auslesen !?
Dann solltest du es mal so versuchenDWORD dwNumber = 0; DWORD dwReg = sizeof(DWORD); RegQueryValueEx(hKeyServerPort ,"Port", 0, 0, (BYTE*)&dwNumber, &dwReg); CString strNumber; strNumber.Format("%d", dwNumber); // [...]
In strNumber steht nun deine Zahl...
Hoffe konnte dir helfen...Gruß
:: NoName ::
-
Jip, es soll der Port ausgelesen werden.
Soweit so klar... Vielen Dank erstmal bis hierhin! Das hatte ich auch schon hinbekommen jedoch kommt nur 234 in meinem feld raus.... ka wieso.Mein Code sieht im moment folgendermaßen aus:
HKEY hKeyServerPort; DWORD dwNumber = 0; DWORD dwReg = sizeof(DWORD); RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Metex\\ServerConf", 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKeyServerPort, 0); dwReg = RegQueryValueEx(hKeyServerPort, "Port", 0, 0,(BYTE*)&dwNumber, &dwReg); CString strNumber; strNumber.Format("%d", dwReg); MessageBox(strNumber, "Info"); dlg.m_strEditPort = strNumber; dlg.DoModal();
-
Hmm, lass mal das 'dwReg =' weg.
(dwReg = )RegQueryValueEx(hKeyServerPort, "Port", 0, 0,(BYTE*)&dwNumber, &dwReg);
nur
RegQueryValueEx(hKeyServerPort, "Port", 0, 0,(BYTE*)&dwNumber, &dwReg);
reicht aus...
Gruß
:: NoName ::
-
Jetzt kommt irgendwie 4 bei raus....
Ich hab hier einfach mal mein komplettes Projekt hochgeladen, in der hoffnung das das irgendwie hilft.Danke das du zu so später Stund noch mitdenkst!!
Gruß
Chris