DLL ActiveX avec VC++ / ASP

cs_yAAm Messages postés 45 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 22 février 2006 - 22 févr. 2006 à 15:12
cs_yAAm Messages postés 45 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 22 février 2006 - 22 févr. 2006 à 20:18
Bonjour,
Un petit probleme avec atl/com+ / asp.
En codant es fonctions simplistes comme :
//[out, retval] //
STDMETHODIMP CCDllVente::TestRetVal(SHORT* returnval)
{
*returnval = 500;

return S_OK;
}
=> ca fonctionne bien, retourne bien la valeur 500 au code asp.
// [in] // [out, retval]
STDMETHODIMP CCDllVente::TestIn(SHORT inval, SHORT * outval)
{
* outval = inval + inval ;
return S_OK;
}
=> marche très bien aussi

Mais :
// [out]
STDMETHODIMP CCDllVente::TestOut(SHORT * Value)
{

* Value = 50 ;

return S_OK;
}


Ne veut pas fonctionner. J'ai essayé avec plusieurs type de données, et la valeur n'est jamais renvoyé à l'asp .. .
Exemple de code asp :

set MyObj = server.CreateObject("CVente.CDLLVente")
iTotal = 3 ' // C'est pour lui donner une valeur, de toute facon la dll est censée a réecrire

MyObj.TestOut iTotal ' // Renvoi un "tpye incopatible"


MyObj.TestOut int(iTotal) '// renvoi rien .. la valeur reste à 3

Si Qqn a une idée, ca me depannerai bien.
Merci bcp.

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
22 févr. 2006 à 18:14
Comment tu déclares et passe param du 1er exemple qui va bon ?

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0
cs_yAAm Messages postés 45 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 22 février 2006
22 févr. 2006 à 20:15
[id(4), helpstring("method TestRetVal")] HRESULT TestRetVal([out,retval] SHORT* returnval);

Dans l'idl ^

dans l'asp :

set MyObj = server.CreateObject("CVente.CDLLVente")
iTotal = 3

iTotal = MyObj.TestRetVal() ' // Renvoi un "tpye incopatible"
Response.Write("Valeur : " & iTotal &"
")

J'ai essayé aussi :

iTotal = 0
iTotal2 = MyObj.TestInOut(6,int(iTotal))

Avec du coté dll :
// [idl] :

[id(6), helpstring("method TestInOut")] HRESULT TestInOut([in] SHORT inval, [out] SHORT * outval , [out,retval] SHORT * retval);

// Cpp

STDMETHODIMP CCDllVente::TestInOut(SHORT inval, SHORT * outval , SHORT * retval)
{
* retval = inval * inval ;
* outval = inval + inval ;
return S_OK;
}


le [out, retval] est bien dans iTotal2, qui est le caré de 6, mais le [out] est tojours vide (iTotal) .
C'est frustrant. Tu vois quelque chose ?
0
cs_yAAm Messages postés 45 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 22 février 2006
22 févr. 2006 à 20:18
Petite erreur ds le mesage ci dessus .

j'ai noté :

iTotal = MyObj.TestRetVal() ' // Renvoi un "tpye incopatible"
Response.Write("Valeur : " & iTotal &"
")

mais cet exemple marche le " //Renvoi un type incompatible est un reste de copié coller à ne pas prendre en compte ."
0
Rejoignez-nous