Problème fonction

Résolu
Messages postés
45
Date d'inscription
samedi 18 novembre 2000
Statut
Membre
Dernière intervention
10 janvier 2009
-
Messages postés
45
Date d'inscription
samedi 18 novembre 2000
Statut
Membre
Dernière intervention
10 janvier 2009
-
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

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
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é.
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
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
<!--
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
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
Messages postés
45
Date d'inscription
samedi 18 novembre 2000
Statut
Membre
Dernière intervention
10 janvier 2009

Jai changé le  int en void puis j'ai enlevé le  return sa marche nikel , la fonction renvoi le buf correctement. Merci à vous