Registry-Eintrag erstellen
-
Hallo zusammen!
Ich habe mir die FAQ zum Thema Registry mal angesehen und habe einen unklaren Punkt.
Dort steht:
BYTE cString[]="Hallo, das ist der eigentliche Wert, der unter dem Namen EintragsName gespeicehrt wird";
RegSetValueEx(hKey,"EintragsName",0,REG_SZ,cString,strlen(cString)+1);
(BYTE ist als unsigned char definiert)Leider bin ich noch nicht so fit und blicke bei der Sache mit dem BYTE nicht durch. Ich habe eine Variable vom Typ CString, mit der ich gerne den Eintrag machen würde.
Das heißt an der Stelle wo hier im Beispiel cString steht, steht bei mir meine Variable. Ich bekomm aber die Meldung, dass CString nicht in const BYTE * konvertiert werden kann.Was muss ich tun???
Danke schonmal!!!
Grüße
-
hmm, CString ist MFC, oder ? naja, nicht unbedingt meine baustelle
aber eines ist klar - CString ist ein Object und da kannst du natürlich nicht einfach einen "BYTE* cast" machen ...
ich vermute mal, es wird ähnlich wie bei der STL eine art String::c_str() funktion geben, die dir einen char* oder einen LPCSTR aus dem object auf den string liefert.
den kannst du dann problemlos nach BYTE* casten ...
so far ... rocknix ///
-
Also, es ist kein MFC-Programm. Soviel weiß ich. Habe halt noch nich soviel Ahnung.
CString habe ich aus der <atlstr.h>. Da gibts auch noch <CStringT.h> und das is glaub ich für MFC.
Und wie ist das mit String? Ohne C. Das gibts ja in Java auch. Welchen Header brauche ich dafür?
-
Du kannst das Problem mit dem CString wie folgt lösen.
anstelle von cString aus dem Beispiel trägst du folgendes vor deiner
CString Variable ein.Heist deine Variable zum Beispiel:
CString m_szTest;Dann würde der Ruf wie folgt aussehen.
RegSetValueEx( , , , ,(unsigned char*)(LPCTSTR)m_szTest, );
Durch diese TypCasts machst du den CString zum BYTE*
Gruss
[ Dieser Beitrag wurde am 25.04.2003 um 13:27 Uhr von DaDaywalker editiert. ]
-
Hey Danke!
Es funzt. Das mit den Casts und so muss ich noch lernen. Der * hat mich verwirrt. Also: unsigned char*. Was ist da jetzt der Unterschied zu unsigned char (ohne *)???
Grüßle
-
Okay der * zeigt immer das es sich um einen Pointer handelt.
unsigned char bedeutet das es sich um ein einzelnes Zeichen handelt vohingegen
unsigned char* eine undefinierte Länge hat. Es ist also eine Ansammlung von mehreren unsigned char(s). Ein Pointer auf ein/mehrere unsigned char(s);Stell dir vor du hast mehrere Paar schuhe nebeneinander stehen, dann repräsentiert der unsigned char jeweils das aller erste paar. Sofern nicht anders definiert. Hingegen der unsigned char* repräsentiert alle Schuhe die nebeneinanderstehen.
-
Super vielen Dank. Das bringt mich weiter.
Der Pointer zeigt also auf den Schrank (SpeicherAdresse) wo die Schuhe stehen und nicht auf die einzelnen Schuhe (Inhalt)?!
Kann man doch so sagen, oder?
-
NEIN weil du mit dem Pointer auch den Inhalt siehst aber ein
unsigned char ist einfach nur ein einzelnes Zeichen !
ein unsigned char* kann ein einzelnes Zeichen aber auch X Zeichen haben.
Gruss
-
Ok. Danke für deine Geduld!