Bonjour,

j'ai un ptit souci avec une struct passée en pointeur en argument d'une méthode
et en fait, elle n'est pas mise à jour au retour,
je sais pas trop comment ça se fait...

donc si vous pourriez me donner un ptit coup de pouce ...

Alors déjà, attention,
ça peut paraître un peu barbare...
mais j'utilise des types définis dans une librairie C...


Donc, j'ai 2 structures :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
struct Message{
    unsigned char  nature;
    char              nomUtilisateur[MAX_SIZE];
    unsigned short periode;
    unsigned char  data;};
 
struct Unite{
    unsigned short longueur;
    Message    mess;};
J'ai une méthode qui me sert à remplir une structure 'Unite' :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
MaMethode(unsigned short *lgMess, Message *mess)
{
    unsigned short lgData;
    unsigned char *donnees;
 
    //...calcul de la longueur...
    *lgMess = sizeof(Message) - 1 + lgData;
 
   // allocation de la structure du message
   mess = (Message*) malloc(*lgMess);
   (void) memset(mess, 0, *lgMess);
 
   // affectation des champs de la structure
   mess->nature = ...
   StringCbCat(mess->nomUtilisateur, MAX_SIZE, "nomUtilisateur");
 
   donnees = new unsigned char[lgData];
   //... remplissage du tableau...
 
   //copie dans le message
   memcpy(&mess->data, donnes, lgData);
 
   delete[] donnees;
}
Et donc, quand j'appelle cette méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Unite monUnite;
 
MaMethode(&monUnite.longueur, &monUnite.mess);
eh ben, le champ 'longueur' est bien à jour
mais aucun champ de la struct 'mess'

Pourtant, quand je rentre en debug,
ça paraît tout bien...


Alors alors??
z'avez des pistes?...