Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » max. Anzahl der Bytes herrausfinden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.02.2005, 11:10 Uhr
Diablo



ich will nur ein teil eines keys von der registry auslesen, hier mal mein code:

Code:
#include <windows.h>
#include <iostream>
using namespace std;
  
int main()
{
  HKEY m_hkey;
  unsigned char lpValue[MAX_PATH];
  DWORD dwType = REG_SZ;
  DWORD dwSize = MAX_PATH;
RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Valve\\Steam",0,KEY_ALL_ACCESS,&m_hkey);
RegQueryValueEx(m_hkey, "ModInstallPath", 0, &dwType,lpValue,&dwSize);
  cout<<"Installpath:   "<<lpValue<<endl;
  RegCloseKey(m_hkey);
return 0;
}



das programm gibt mir "c:/programme/steam/steamapps/****/half-life" aus
und das problem ist, dass ich am ende nur "c\programme\\steam\\steamapps\\****"
haben will, dh man muss die max byteanzahl herrausfinden und von dieser dann 8 abziehn.
dann hätten wir 34 bytes, die ich dann eins nach dem andern in einen neuen string einsetzten kann!
frage: wie geht das? ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.02.2005, 12:33 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ich versteh kein wort... meinst du mit maximaler byteanszahl die stringlänge? strlen?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.02.2005, 13:11 Uhr
Tommix



Hallo,
wenn ich's recht verstehe müßte es so in etwa gehen:

C++:
#include <string.h>

/* ... */

int len = strlen(lpValue);
if (len > 8) lpValue[len-8] = '\0';



[OT]
Alfi versteht kein Deutsch, Du mußt sächsisch schreiben
[/OT]

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.02.2005, 14:24 Uhr
Diablo



sorry, aber ich kann nicht gut erklären!
ich will am ende einfach
c:/programme\\steam\\steamapps\\****"
da stehn haben OHNE das halflife!
hier mal mein versuch mit tommixs methode:


C++:
#include <windows.h>
#include <iostream>
#include <string.h>

using namespace std;
  
int main()
{
  HKEY m_hkey;
  unsigned char lpValue[MAX_PATH];
  DWORD dwType = REG_SZ;
  DWORD dwSize = MAX_PATH;
RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Valve\\Steam",0,KEY_ALL_ACCESS,&m_hkey);
RegQueryValueEx(m_hkey, "ModInstallPath", 0, &dwType,(LPBYTE)lpValue,&dwSize);
  cout<<"Installpath:   "<<lpValue<<endl;
  RegCloseKey(m_hkey);
int len = strlen(lpValue);
if (len > 8) lpValue[len-8] = '\0';
cout<<"Installpath2:   "<<lpValue<<endl;
return 0;
}



nur passt unsigned char nicht mit const char zusammen (strlen(const char*))
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.02.2005, 16:25 Uhr
Tommix



Das unsigned kannst/solltest Du weglassen. Ansonsten mußt Du casten:

C++:
len = strlen((char*)lpValue);



- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.02.2005, 17:15 Uhr
Diablo



vielen dank! genau so hab ich mir das vorgestellt
[edit]
@windalf
ich weiß doch das es sch**se erklärt war, aba immernoch zu verstehen

Dieser Post wurde am 12.02.2005 um 17:30 Uhr von Diablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.02.2005, 17:25 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

wenn ich's recht verstehe müßte es so in etwa gehen


na da war sich aber jemand auch nicht sicher...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: