RegSetValueEx geht nicht....
-
zu den header Dateien hinzugefügt...
#include "string.h"mein Knopf...
BYTE cString[]="Hallo";
RegSetValueEx(HKEY_CURRENT_USER,"test",0,REG_SZ,cString,strlen(cString)+1);der Compiler...
error C2664: 'strlen' : cannot convert parameter 1 from 'BYTE [6]' to 'const char *'was mache ich falsch?
-
1. Bitte cpp-Tags benutzen zur besseren Lesbarkeit.

2. <string> statt <string.h> inkludieren
3. Caste einfach nach char*.
-
ok,thx
hmmm
1.kein Problem
2.ok,was ist der unterschied?
3.verstehe ich nicht
-
2. <string> ist ein C++-Header, <string.h> noch der alte C-Header...
(char*)cStringEDIT: Wie lange dauert es wohl, bis jemand anmeckert, dass ich hier C++-Header anpreise und im gleichen Atemzug C-Casts verwende? Wo bleiben die Puristen?

-
thx
BYTE cString[]="Hallo, das ist der eigentliche Wert, der unter dem Namen EintragsName gespeicehrt wird"; RegSetValueEx(HKEY_CURRENT_USER,"Test",0,REG_SZ,cString,strlen((char*)cString)+1);ich hoffe ich habe den code richtig angebracht

Der Compiler hat keinen Fehler gebracht.nach dem Anklicken, passiert nichts

Mein Knopf für Verzeichnisse erstellen im registry funkt.
-
Was kommt denn bei dem Aufruf raus? Check mal den Rückgabewert von RegSetValueEx (steht auch in der Doku).
-
_matze schrieb:
(char*)cStringEDIT: Wie lange dauert es wohl, bis jemand anmeckert, dass ich hier C++-Header anpreise und im gleichen Atemzug C-Casts verwende? Wo bleiben die Puristen?

Da muss man kein Purist sein um zu sehen, dass dieser cast nichtsd bringt. cString hat keinen implizite Konverteierung nach char*...
Das ist ein Katastrophen cast!
-
tomycat2009 schrieb:
zu den header Dateien hinzugefügt...
#include "string.h"mein Knopf...
BYTE cString[]="Hallo";
RegSetValueEx(HKEY_CURRENT_USER,"test",0,REG_SZ,cString,strlen(cString)+1);der Compiler...
error C2664: 'strlen' : cannot convert parameter 1 from 'BYTE [6]' to 'const char *'was mache ich falsch?
1. BYTE* ist eben nicht char* für strlen.
2. also mach einen char[] draus und caste.char cString[]="Hallo"; RegSetValueEx(HKEY_CURRENT_USER,"test",0,REG_SZ,reinterpret_cast<BYTE*>(cString),strlen(cString)+1);
-
Ich habe mich auf den Compilerfehler, also auf den falschen Parameter von strlen bezogen. Und da funktioniert mein Cast selbstverständlich und bringt das gewünschte Ergebnis! Ob es nicht sinnvoll ist, den String sowieso als char* zu deklarieren, ist eine andere Frage.
-
sorry, ich blicks jetzt garnicht mehr.
wieso Byte?
und warum brauche ich strlen?
-
tomycat2009 schrieb:
sorry, ich blicks jetzt garnicht mehr.
wieso Byte?
und warum brauche ich strlen?
Sieh dir doch deinen eigenen, ersten Post an! Du hast das doch selbst verwendet...