Bonjour,

J'ai créé un objet DCOM qui a 1 propriété nommé "nb". Mon éditeur (C++builder) a lui-même créé les accesseurs correspondants: set_nb et get_nb.
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
 
interface IComplexClass  : public IDispatch
{
public:
  virtual HRESULT STDMETHODCALLTYPE get_nb(long* Value/*[out,retval]*/) = 0; // [201]
  virtual HRESULT STDMETHODCALLTYPE set_nb(long Value/*[in]*/) = 0; // [201]
 
#if !defined(__TLB_NO_INTERFACE_WRAPPERS)
 
  long __fastcall get_nb(void)
  {
    long Value;
    OLECHECK(this->get_nb((long*)&Value));
    return Value;
  }
 
  __property   long            nb = {read = get_nb, write = set_nb};
 
#endif //   __TLB_NO_INTERFACE_WRAPPERS
 
};
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
25
26
 
STDMETHODIMP TComplexClassImpl::set_nb(long Value)
{
  try
  {
 
  }
  catch(Exception &e)
  {
    return Error(e.Message.c_str(), IID_IComplexClass);
  }
  return S_OK;
};
 
STDMETHODIMP TComplexClassImpl::get_nb(long* Value)
{
  try
  {  
 
  }
  catch(Exception &e)
  {
    return Error(e.Message.c_str(), IID_IComplexClass);
  }
  return S_OK;
};
Mais ils sont tous les 2 vides.

Si je ne met rien à l'intérieur, ma propriété n'est pas mise à jour via un set.
Code du main client:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
    // creation de l'objet distant 
    TCOMIComplexClass CC = CoComplexClass::CreateRemote(L"UC06P1556.fr.pierre-fabre.lcl");
 
    // on set la propriété nb
    CC.set_nb(10);
 
    // on la recupere    
    long value;
    CC.get_nb(&value);
 
    // on l'affiche
    cout << "nb client: " << value << endl;
Ca me donne:
Et si je met dans le set:
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
 
STDMETHODIMP TComplexClassImpl::set_nb(long Value)
{
  try
  {
     // on affiche Value dans le memo
     AnsiString texte = "Set Value: ";
     texte += Value;
     Form1->Memo1->Lines->Add(texte); 
 
     // on donne la valeur Value à la propriété nb
     this->nb = Value;
  }
  catch(Exception &e)
  {
    return Error(e.Message.c_str(), IID_IComplexClass);
  }
  return S_OK;
};
La, ça tourne en boucle jusqu'au débordement de la pile:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
......
Value: 10
Value: 10
Value: 10
Value: 10
.....
Quelqu'un voit-il d'où vient le problème?