Problème fonction

Résolu
cs_Mini92 Messages postés 45 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 janvier 2009 - 21 août 2006 à 02:49
cs_Mini92 Messages postés 45 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 janvier 2009 - 21 août 2006 à 04:57
Plop all :)

Voilà, j'ai fais cette fonction qui récupère la valeur d'une clé du registre :

/**
* Retourne la valeur d'une clé dans le registre
* @Key  = Key Path
* @Name = Key Name
* @Buf  = Buffer
* @Size = Size Buffer
*/
int ViewUserVal (char *Key, char *Name, char *Buf, int Size)
{
    HKEY hKey;
    if (!RegOpenKeyEx (HKEY_CURRENT_USER, Key, 0, KEY_ALL_ACCESS, &hKey)) {
    int s;
    s = Size;
    RegQueryValueEx (hKey, Name, 0, 0, (BYTE*)Buf, (DWORD*)&s);
    RegCloseKey (hKey);
    return (Buf); }
}

La fonction marche nikel mais j'obtiens ce message d'erreur :
In function 'ViewUserVal'.
[Warning] return makes integer from pointer whitout a cast

Merci d'avance

4 réponses

racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 15
21 août 2006 à 03:29
Salut,
Normalement, ta fonction n'as pas besoin de retourner quoi que ce soit.
void ViewUserVal (char *Key, char *Name, char *Buf, int Size)
{
    HKEY hKey;
    if (!RegOpenKeyEx (HKEY_CURRENT_USER, Key, 0, KEY_ALL_ACCESS, &hKey)) {
    int s;
    s = Size;
    RegQueryValueEx (hKey, Name, 0, 0, (BYTE*)Buf, (DWORD*)&s);
    RegCloseKey (hKey);
   }
}

A la sortie de la fonction, le buffer passé en 3ème paramètre contiendra la valeur de la clé.
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
21 août 2006 à 02:56
Ben tu essais de renvoyer un pointeur char dans un int. Ya 2 solutions.
La première et celle que je te recommande c'est de changer la valeur de retour de ta fonction pour char *:
char *ViewUserVal (char *Key, char *Name, char *Buf, int Size)

sinon, tu peut effectuer un cast sur la valeur de retour:
return (int)buf;

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation
<!--
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
21 août 2006 à 03:35
Il peut, en retournant un pointeur char, déclarer un autre pointeur sur cette chaine. Ceci dit, je n'en vois pas l'utilité dans ce context à moin qu'il retourne un pointeur sur fin de chaine mais à priori, ce n'est pas le cas. On sais jamais. :)

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation
0
cs_Mini92 Messages postés 45 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 janvier 2009
21 août 2006 à 04:57
Jai changé le  int en void puis j'ai enlevé le  return sa marche nikel , la fonction renvoi le buf correctement. Merci à vous 
0
Rejoignez-nous