Conversion d'un char en LPCSTR ?

Signaler
Messages postés
55
Date d'inscription
mercredi 24 décembre 2003
Statut
Membre
Dernière intervention
14 avril 2007
-
Messages postés
55
Date d'inscription
mercredi 24 décembre 2003
Statut
Membre
Dernière intervention
14 avril 2007
-
Bonjour d'un débutant en C++

Voila j'arrive pas à convertire un char en LPCSTR

Voici la parti du code ki me pose pb :

...

void LitTexte(HKEY HK,char* cle,char* nom,char* valeur,unsigned long taille)
{
    HKEY Retour;
    unsigned long type;
    
    RegOpenKeyEx(HK,cle,0,KEY_ALL_ACCESS,&Retour);
    RegQueryValueEx( Retour,nom,NULL,&type,(unsigned char *)valeur,&taille);
    RegCloseKey(Retour);
}

void killer()
{
MessageBox(NULL, "blabla", "Unhandled Exception", MB_OK | MB_ICONERROR);
exit(-1);
}
static int Run(LPTSTR /*lpstrCmdLine*/ NULL, int nCmdShow SW_SHOWDEFAULT)
{
      if(Util::getOsVersion()=="WinXP Pro SP1") {
char valeur[14];
LitTexte(HKEY_LOCAL_MACHINE,"SOFTWARE\\test","InstallPath",valeur,14);
MessageBox(NULL, &valeur, "test", MB_OK | MB_ICONINFORMATION);
}
else {
killer();
}

...


mm en ulisant la fonction .c_str() comme suis
MessageBox(NULL, &valeur.c_str(), "test", MB_OK | MB_ICONINFORMATION);


Le compileur me retourne encore une erreur.

Ou peut être ke j'utilise pas le bon code pour lire la base de registre.

le message box c'était juste pour verifier ce ke sa donne.
M'enfin je voudrai bien savoir kan mm comment sa marche.

Ce ke je veut c'est faire kelke chose komme sa ensuite dite moi si c'est bon (a la place du message box en faite):
if(valeur=="12889-454-4464-466-54664") {
....


Ce que je faire en definitif c'est excuté un bout de code ke si la valeur d'une clef corespond a se ke j'atend.

J'espére avoir été clair.

Merci de vos reponses

PS : J'utlise VC++ 7.1

3 réponses

Messages postés
398
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
15 juin 2007
2
Quel est le probleme ? un LPCSTR c'est juste un const char *.
donc si tu dois passer un LPCSTR et que tu as un pointeur sur un char, il suffit de caster

char * chaine;

appel(..., (LPCSTR) chaine);

Ai-je compris la question ?
Messages postés
55
Date d'inscription
mercredi 24 décembre 2003
Statut
Membre
Dernière intervention
14 avril 2007

vi en effet si je met pas & devant "valeur"
cela fonctionne cela marche eglement avec (LPCSTR)valeur

mais kan le messageBox s'ouvre il me sort des caractére incompréhensible. au lieu de me donné la valeur la clef de la basse de registre.
Alors kelle fonction utilisé pour sortir les résultat en caractére normal ?
Messages postés
55
Date d'inscription
mercredi 24 décembre 2003
Statut
Membre
Dernière intervention
14 avril 2007

J'ai trouvé mon erreur
Je pointait vers une clef ki n'éxistait pas
et de plus
mon char valeur[14]
n'était pas assez grand.