begin process at 2012 05 29 11:33:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Pour les doués, moi j'en peu plus !


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pour les doués, moi j'en peu plus !

vendredi 11 avril 2003 à 10:59:17 | Pour les doués, moi j'en peu plus !

sena

Salut

je voudrais en fait faire un passage de paramètre a une fonction dont un a une valeur par défaut. (puis inclure ca dnas une DLL)
Par exemple une fonction possède 2 aparamètre et si je veux, je ne passe que le 1er lors de l'appel et l'autre prend automatiquement une valeur qu'on lui attribu par défo.

Ce qui donne ceci en C :

int fonction(char * , int =100);

void main(void)
{
//variable de retour
int retour = 0;
//paramètre
char chaine[20] = "helloworld";

//La je ne passe que le char* donc le int prends la valeur 100
retour = fonction(chaine);
}

int fonction(char * fchaine, int fentier )
{
fchaine[0] = 'a';

if( fentier == 100)
fentier = fentier + 10;
else
fentier = fentier + 2;

return fentier;
}

Bon voila, ca ca marche !

maintenant je voudrais mettre la fonction dans une DLL et l'appelé en VB.
Eh bien ca ne fonctionne pas !
Voila le code que j'ai dans le .cpp de ma dll (je vous ai mis que le code principal)
#include "dll_MA.h"
int EXPORT FonctionMA(char * chaine, int entier)
{
chaine[0] = 19;
entier ++;
return entier;
}
et dans le .h
int EXPORT FonctionMA(char *,int = 100);

En ce qui concerne le code VB
Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String) As Integer



Private Sub btn_Ecrire_Click()
Dim Retour As Integer
Dim text As String

text = "letexte"
Retour = Dllfonction(text)
End Sub

En fait ma dll fonctionne quand je n'ai pas de paramètrre par défaut, donc il doit y avoir une astuce pour ce type de paramètres mais la je ne vois pas.... :o(

Quelqu'un a t-il déja fais un truc similaire?

Merci beaucoup d'avance, car moi j'en peu plus !!!!!!
vendredi 11 avril 2003 à 11:18:16 | Re : Pour les doués, moi j'en peu plus !

BruNews

Administrateur CodeS-SourceS
Tu peux pas mettre aussi declaration du param par defaut dans VB ???
Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String, ByVal l As Long = 100) As Integer
ou un truc du genre.
BruNews, ciao...


-------------------------------
Réponse au message :
-------------------------------

> Salut
>
> je voudrais en fait faire un passage de paramètre a une fonction dont un a une valeur par défaut. (puis inclure ca dnas une DLL)
> Par exemple une fonction possède 2 aparamètre et si je veux, je ne passe que le 1er lors de l'appel et l'autre prend automatiquement une valeur qu'on lui attribu par défo.
>
> Ce qui donne ceci en C :
>
> int fonction(char * , int =100);
>
> void main(void)
> {
> //variable de retour
> int retour = 0;
> //paramètre
> char chaine[20] = "helloworld";
>
> //La je ne passe que le char* donc le int prends la valeur 100
> retour = fonction(chaine);
> }
>
> int fonction(char * fchaine, int fentier )
> {
> fchaine[0] = 'a';
>
> if( fentier == 100)
> fentier = fentier + 10;
> else
> fentier = fentier + 2;
>
> return fentier;
> }
>
> Bon voila, ca ca marche !
>
> maintenant je voudrais mettre la fonction dans une DLL et l'appelé en VB.
> Eh bien ca ne fonctionne pas !
> Voila le code que j'ai dans le .cpp de ma dll (je vous ai mis que le code principal)
> #include "dll_MA.h"
> int EXPORT FonctionMA(char * chaine, int entier)
> {
> chaine[0] = 19;
> entier ++;
> return entier;
> }
> et dans le .h
> int EXPORT FonctionMA(char *,int = 100);
>
> En ce qui concerne le code VB
> Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String) As Integer
>
>
>
> Private Sub btn_Ecrire_Click()
> Dim Retour As Integer
> Dim text As String
>
> text = "letexte"
> Retour = Dllfonction(text)
> End Sub
>
> En fait ma dll fonctionne quand je n'ai pas de paramètrre par défaut, donc il doit y avoir une astuce pour ce type de paramètres mais la je ne vois pas.... :o(
>
> Quelqu'un a t-il déja fais un truc similaire?
>
> Merci beaucoup d'avance, car moi j'en peu plus !!!!!!
>
vendredi 11 avril 2003 à 11:28:07 | Re : Pour les doués, moi j'en peu plus !

sena

Bah non parce que le but c'est que l'appel en VB ne fasse pas apparaitre le deuxième argument
l'idée est de ne mettre que le 1er paramètre et l'autre uniquement si on n'en na besoin.

A l'aide !!!!!!



-------------------------------
Réponse au message :
-------------------------------

> Tu peux pas mettre aussi declaration du param par defaut dans VB ???
> Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String, ByVal l As Long = 100) As Integer
> ou un truc du genre.
> BruNews, ciao...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Salut
> >
> > je voudrais en fait faire un passage de paramètre a une fonction dont un a une valeur par défaut. (puis inclure ca dnas une DLL)
> > Par exemple une fonction possède 2 aparamètre et si je veux, je ne passe que le 1er lors de l'appel et l'autre prend automatiquement une valeur qu'on lui attribu par défo.
> >
> > Ce qui donne ceci en C :
> >
> > int fonction(char * , int =100);
> >
> > void main(void)
> > {
> > //variable de retour
> > int retour = 0;
> > //paramètre
> > char chaine[20] = "helloworld";
> >
> > //La je ne passe que le char* donc le int prends la valeur 100
> > retour = fonction(chaine);
> > }
> >
> > int fonction(char * fchaine, int fentier )
> > {
> > fchaine[0] = 'a';
> >
> > if( fentier == 100)
> > fentier = fentier + 10;
> > else
> > fentier = fentier + 2;
> >
> > return fentier;
> > }
> >
> > Bon voila, ca ca marche !
> >
> > maintenant je voudrais mettre la fonction dans une DLL et l'appelé en VB.
> > Eh bien ca ne fonctionne pas !
> > Voila le code que j'ai dans le .cpp de ma dll (je vous ai mis que le code principal)
> > #include "dll_MA.h"
> > int EXPORT FonctionMA(char * chaine, int entier)
> > {
> > chaine[0] = 19;
> > entier ++;
> > return entier;
> > }
> > et dans le .h
> > int EXPORT FonctionMA(char *,int = 100);
> >
> > En ce qui concerne le code VB
> > Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String) As Integer
> >
> >
> >
> > Private Sub btn_Ecrire_Click()
> > Dim Retour As Integer
> > Dim text As String
> >
> > text = "letexte"
> > Retour = Dllfonction(text)
> > End Sub
> >
> > En fait ma dll fonctionne quand je n'ai pas de paramètrre par défaut, donc il doit y avoir une astuce pour ce type de paramètres mais la je ne vois pas.... :o(
> >
> > Quelqu'un a t-il déja fais un truc similaire?
> >
> > Merci beaucoup d'avance, car moi j'en peu plus !!!!!!
> >
>
vendredi 11 avril 2003 à 11:33:42 | Re : Pour les doués, moi j'en peu plus !

BruNews

Administrateur CodeS-SourceS
C'est aussi le but que j'esperais atteindre avec cette declaration. Tu as essaye de la mettre et de ne passer qu'1 seul param ?
BruNews, ciao...


-------------------------------
Réponse au message :
-------------------------------

> Bah non parce que le but c'est que l'appel en VB ne fasse pas apparaitre le deuxième argument
> l'idée est de ne mettre que le 1er paramètre et l'autre uniquement si on n'en na besoin.
>
> A l'aide !!!!!!
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Tu peux pas mettre aussi declaration du param par defaut dans VB ???
> > Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String, ByVal l As Long = 100) As Integer
> > ou un truc du genre.
> > BruNews, ciao...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Salut
> > >
> > > je voudrais en fait faire un passage de paramètre a une fonction dont un a une valeur par défaut. (puis inclure ca dnas une DLL)
> > > Par exemple une fonction possède 2 aparamètre et si je veux, je ne passe que le 1er lors de l'appel et l'autre prend automatiquement une valeur qu'on lui attribu par défo.
> > >
> > > Ce qui donne ceci en C :
> > >
> > > int fonction(char * , int =100);
> > >
> > > void main(void)
> > > {
> > > //variable de retour
> > > int retour = 0;
> > > //paramètre
> > > char chaine[20] = "helloworld";
> > >
> > > //La je ne passe que le char* donc le int prends la valeur 100
> > > retour = fonction(chaine);
> > > }
> > >
> > > int fonction(char * fchaine, int fentier )
> > > {
> > > fchaine[0] = 'a';
> > >
> > > if( fentier == 100)
> > > fentier = fentier + 10;
> > > else
> > > fentier = fentier + 2;
> > >
> > > return fentier;
> > > }
> > >
> > > Bon voila, ca ca marche !
> > >
> > > maintenant je voudrais mettre la fonction dans une DLL et l'appelé en VB.
> > > Eh bien ca ne fonctionne pas !
> > > Voila le code que j'ai dans le .cpp de ma dll (je vous ai mis que le code principal)
> > > #include "dll_MA.h"
> > > int EXPORT FonctionMA(char * chaine, int entier)
> > > {
> > > chaine[0] = 19;
> > > entier ++;
> > > return entier;
> > > }
> > > et dans le .h
> > > int EXPORT FonctionMA(char *,int = 100);
> > >
> > > En ce qui concerne le code VB
> > > Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String) As Integer
> > >
> > >
> > >
> > > Private Sub btn_Ecrire_Click()
> > > Dim Retour As Integer
> > > Dim text As String
> > >
> > > text = "letexte"
> > > Retour = Dllfonction(text)
> > > End Sub
> > >
> > > En fait ma dll fonctionne quand je n'ai pas de paramètrre par défaut, donc il doit y avoir une astuce pour ce type de paramètres mais la je ne vois pas.... :o(
> > >
> > > Quelqu'un a t-il déja fais un truc similaire?
> > >
> > > Merci beaucoup d'avance, car moi j'en peu plus !!!!!!
> > >
> >
>
vendredi 11 avril 2003 à 12:04:00 | Re : Pour les doués, moi j'en peu plus !

sena

Ouais mais la compilation ne passe pas si on initialise le 2nd paramètre comme dans la ligne que tu m'as filé.
mais j'aimerais en fait que l'initialisation ne se fasse QUE dans la dll et pas dans le code VB.
Il faut que je fasse plusieurs fonctions différentes?



-------------------------------
Réponse au message :
-------------------------------

> C'est aussi le but que j'esperais atteindre avec cette declaration. Tu as essaye de la mettre et de ne passer qu'1 seul param ?
> BruNews, ciao...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bah non parce que le but c'est que l'appel en VB ne fasse pas apparaitre le deuxième argument
> > l'idée est de ne mettre que le 1er paramètre et l'autre uniquement si on n'en na besoin.
> >
> > A l'aide !!!!!!
> >
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Tu peux pas mettre aussi declaration du param par defaut dans VB ???
> > > Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String, ByVal l As Long = 100) As Integer
> > > ou un truc du genre.
> > > BruNews, ciao...
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Salut
> > > >
> > > > je voudrais en fait faire un passage de paramètre a une fonction dont un a une valeur par défaut. (puis inclure ca dnas une DLL)
> > > > Par exemple une fonction possède 2 aparamètre et si je veux, je ne passe que le 1er lors de l'appel et l'autre prend automatiquement une valeur qu'on lui attribu par défo.
> > > >
> > > > Ce qui donne ceci en C :
> > > >
> > > > int fonction(char * , int =100);
> > > >
> > > > void main(void)
> > > > {
> > > > //variable de retour
> > > > int retour = 0;
> > > > //paramètre
> > > > char chaine[20] = "helloworld";
> > > >
> > > > //La je ne passe que le char* donc le int prends la valeur 100
> > > > retour = fonction(chaine);
> > > > }
> > > >
> > > > int fonction(char * fchaine, int fentier )
> > > > {
> > > > fchaine[0] = 'a';
> > > >
> > > > if( fentier == 100)
> > > > fentier = fentier + 10;
> > > > else
> > > > fentier = fentier + 2;
> > > >
> > > > return fentier;
> > > > }
> > > >
> > > > Bon voila, ca ca marche !
> > > >
> > > > maintenant je voudrais mettre la fonction dans une DLL et l'appelé en VB.
> > > > Eh bien ca ne fonctionne pas !
> > > > Voila le code que j'ai dans le .cpp de ma dll (je vous ai mis que le code principal)
> > > > #include "dll_MA.h"
> > > > int EXPORT FonctionMA(char * chaine, int entier)
> > > > {
> > > > chaine[0] = 19;
> > > > entier ++;
> > > > return entier;
> > > > }
> > > > et dans le .h
> > > > int EXPORT FonctionMA(char *,int = 100);
> > > >
> > > > En ce qui concerne le code VB
> > > > Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String) As Integer
> > > >
> > > >
> > > >
> > > > Private Sub btn_Ecrire_Click()
> > > > Dim Retour As Integer
> > > > Dim text As String
> > > >
> > > > text = "letexte"
> > > > Retour = Dllfonction(text)
> > > > End Sub
> > > >
> > > > En fait ma dll fonctionne quand je n'ai pas de paramètrre par défaut, donc il doit y avoir une astuce pour ce type de paramètres mais la je ne vois pas.... :o(
> > > >
> > > > Quelqu'un a t-il déja fais un truc similaire?
> > > >
> > > > Merci beaucoup d'avance, car moi j'en peu plus !!!!!!
> > > >
> > >
> >
>
vendredi 11 avril 2003 à 12:21:33 | Re : Pour les doués, moi j'en peu plus !

BruNews

Administrateur CodeS-SourceS
et ..., ByVal l = 100 As Long)
Tu ne dois pas te faire passer 1 seul parm sans le savoir, ta dll doit remonter ESP de 8 octets et si 1 seul param passé par VB fera badaboum.
BruNews, ciao...


-------------------------------
Réponse au message :
-------------------------------

> Ouais mais la compilation ne passe pas si on initialise le 2nd paramètre comme dans la ligne que tu m'as filé.
> mais j'aimerais en fait que l'initialisation ne se fasse QUE dans la dll et pas dans le code VB.
> Il faut que je fasse plusieurs fonctions différentes?
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > C'est aussi le but que j'esperais atteindre avec cette declaration. Tu as essaye de la mettre et de ne passer qu'1 seul param ?
> > BruNews, ciao...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Bah non parce que le but c'est que l'appel en VB ne fasse pas apparaitre le deuxième argument
> > > l'idée est de ne mettre que le 1er paramètre et l'autre uniquement si on n'en na besoin.
> > >
> > > A l'aide !!!!!!
> > >
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Tu peux pas mettre aussi declaration du param par defaut dans VB ???
> > > > Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String, ByVal l As Long = 100) As Integer
> > > > ou un truc du genre.
> > > > BruNews, ciao...
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Salut
> > > > >
> > > > > je voudrais en fait faire un passage de paramètre a une fonction dont un a une valeur par défaut. (puis inclure ca dnas une DLL)
> > > > > Par exemple une fonction possède 2 aparamètre et si je veux, je ne passe que le 1er lors de l'appel et l'autre prend automatiquement une valeur qu'on lui attribu par défo.
> > > > >
> > > > > Ce qui donne ceci en C :
> > > > >
> > > > > int fonction(char * , int =100);
> > > > >
> > > > > void main(void)
> > > > > {
> > > > > //variable de retour
> > > > > int retour = 0;
> > > > > //paramètre
> > > > > char chaine[20] = "helloworld";
> > > > >
> > > > > //La je ne passe que le char* donc le int prends la valeur 100
> > > > > retour = fonction(chaine);
> > > > > }
> > > > >
> > > > > int fonction(char * fchaine, int fentier )
> > > > > {
> > > > > fchaine[0] = 'a';
> > > > >
> > > > > if( fentier == 100)
> > > > > fentier = fentier + 10;
> > > > > else
> > > > > fentier = fentier + 2;
> > > > >
> > > > > return fentier;
> > > > > }
> > > > >
> > > > > Bon voila, ca ca marche !
> > > > >
> > > > > maintenant je voudrais mettre la fonction dans une DLL et l'appelé en VB.
> > > > > Eh bien ca ne fonctionne pas !
> > > > > Voila le code que j'ai dans le .cpp de ma dll (je vous ai mis que le code principal)
> > > > > #include "dll_MA.h"
> > > > > int EXPORT FonctionMA(char * chaine, int entier)
> > > > > {
> > > > > chaine[0] = 19;
> > > > > entier ++;
> > > > > return entier;
> > > > > }
> > > > > et dans le .h
> > > > > int EXPORT FonctionMA(char *,int = 100);
> > > > >
> > > > > En ce qui concerne le code VB
> > > > > Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String) As Integer
> > > > >
> > > > >
> > > > >
> > > > > Private Sub btn_Ecrire_Click()
> > > > > Dim Retour As Integer
> > > > > Dim text As String
> > > > >
> > > > > text = "letexte"
> > > > > Retour = Dllfonction(text)
> > > > > End Sub
> > > > >
> > > > > En fait ma dll fonctionne quand je n'ai pas de paramètrre par défaut, donc il doit y avoir une astuce pour ce type de paramètres mais la je ne vois pas.... :o(
> > > > >
> > > > > Quelqu'un a t-il déja fais un truc similaire?
> > > > >
> > > > > Merci beaucoup d'avance, car moi j'en peu plus !!!!!!
> > > > >
> > > >
> > >
> >
>
vendredi 11 avril 2003 à 12:40:24 | Re : Pour les doués, moi j'en peu plus !

sena



Ah oui tu veux dire que je suis obligé de déclarer tous mes paramètres en VB.
Et l'initialistaion de mes paramètres se fait dans le code VB et pas dans la DLL?

Mince....
J'aurais voulu faire comme avec une fonction C, c'est a dire comme le bout de code que j'ai mis tout a l'heure :
Si on appelle la fonction avec un seul paramètre l'autre est initialisé automatiquement ....

Donc en fait mon idée n'est pas faisable avec une dll c'est ca?

-------------------------------
Réponse au message :
-------------------------------

> et ..., ByVal l = 100 As Long)
> Tu ne dois pas te faire passer 1 seul parm sans le savoir, ta dll doit remonter ESP de 8 octets et si 1 seul param passé par VB fera badaboum.
> BruNews, ciao...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Ouais mais la compilation ne passe pas si on initialise le 2nd paramètre comme dans la ligne que tu m'as filé.
> > mais j'aimerais en fait que l'initialisation ne se fasse QUE dans la dll et pas dans le code VB.
> > Il faut que je fasse plusieurs fonctions différentes?
> >
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > C'est aussi le but que j'esperais atteindre avec cette declaration. Tu as essaye de la mettre et de ne passer qu'1 seul param ?
> > > BruNews, ciao...
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Bah non parce que le but c'est que l'appel en VB ne fasse pas apparaitre le deuxième argument
> > > > l'idée est de ne mettre que le 1er paramètre et l'autre uniquement si on n'en na besoin.
> > > >
> > > > A l'aide !!!!!!
> > > >
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Tu peux pas mettre aussi declaration du param par defaut dans VB ???
> > > > > Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String, ByVal l As Long = 100) As Integer
> > > > > ou un truc du genre.
> > > > > BruNews, ciao...
> > > > >
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > Salut
> > > > > >
> > > > > > je voudrais en fait faire un passage de paramètre a une fonction dont un a une valeur par défaut. (puis inclure ca dnas une DLL)
> > > > > > Par exemple une fonction possède 2 aparamètre et si je veux, je ne passe que le 1er lors de l'appel et l'autre prend automatiquement une valeur qu'on lui attribu par défo.
> > > > > >
> > > > > > Ce qui donne ceci en C :
> > > > > >
> > > > > > int fonction(char * , int =100);
> > > > > >
> > > > > > void main(void)
> > > > > > {
> > > > > > //variable de retour
> > > > > > int retour = 0;
> > > > > > //paramètre
> > > > > > char chaine[20] = "helloworld";
> > > > > >
> > > > > > //La je ne passe que le char* donc le int prends la valeur 100
> > > > > > retour = fonction(chaine);
> > > > > > }
> > > > > >
> > > > > > int fonction(char * fchaine, int fentier )
> > > > > > {
> > > > > > fchaine[0] = 'a';
> > > > > >
> > > > > > if( fentier == 100)
> > > > > > fentier = fentier + 10;
> > > > > > else
> > > > > > fentier = fentier + 2;
> > > > > >
> > > > > > return fentier;
> > > > > > }
> > > > > >
> > > > > > Bon voila, ca ca marche !
> > > > > >
> > > > > > maintenant je voudrais mettre la fonction dans une DLL et l'appelé en VB.
> > > > > > Eh bien ca ne fonctionne pas !
> > > > > > Voila le code que j'ai dans le .cpp de ma dll (je vous ai mis que le code principal)
> > > > > > #include "dll_MA.h"
> > > > > > int EXPORT FonctionMA(char * chaine, int entier)
> > > > > > {
> > > > > > chaine[0] = 19;
> > > > > > entier ++;
> > > > > > return entier;
> > > > > > }
> > > > > > et dans le .h
> > > > > > int EXPORT FonctionMA(char *,int = 100);
> > > > > >
> > > > > > En ce qui concerne le code VB
> > > > > > Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String) As Integer
> > > > > >
> > > > > >
> > > > > >
> > > > > > Private Sub btn_Ecrire_Click()
> > > > > > Dim Retour As Integer
> > > > > > Dim text As String
> > > > > >
> > > > > > text = "letexte"
> > > > > > Retour = Dllfonction(text)
> > > > > > End Sub
> > > > > >
> > > > > > En fait ma dll fonctionne quand je n'ai pas de paramètrre par défaut, donc il doit y avoir une astuce pour ce type de paramètres mais la je ne vois pas.... :o(
> > > > > >
> > > > > > Quelqu'un a t-il déja fais un truc similaire?
> > > > > >
> > > > > > Merci beaucoup d'avance, car moi j'en peu plus !!!!!!
> > > > > >
> > > > >
> > > >
> > >
> >
>
vendredi 11 avril 2003 à 12:44:43 | Re : Pour les doués, moi j'en peu plus !

BruNews

Administrateur CodeS-SourceS
Voila que tu as saisi, sinon qui dira a ta dll combien de params sont passés. Tu en fais 2 modeles et le tour est joué.
BruNews, ciao...


-------------------------------
Réponse au message :
-------------------------------

>
>
> Ah oui tu veux dire que je suis obligé de déclarer tous mes paramètres en VB.
> Et l'initialistaion de mes paramètres se fait dans le code VB et pas dans la DLL?
>
> Mince....
> J'aurais voulu faire comme avec une fonction C, c'est a dire comme le bout de code que j'ai mis tout a l'heure :
> Si on appelle la fonction avec un seul paramètre l'autre est initialisé automatiquement ....
>
> Donc en fait mon idée n'est pas faisable avec une dll c'est ca?
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > et ..., ByVal l = 100 As Long)
> > Tu ne dois pas te faire passer 1 seul parm sans le savoir, ta dll doit remonter ESP de 8 octets et si 1 seul param passé par VB fera badaboum.
> > BruNews, ciao...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Ouais mais la compilation ne passe pas si on initialise le 2nd paramètre comme dans la ligne que tu m'as filé.
> > > mais j'aimerais en fait que l'initialisation ne se fasse QUE dans la dll et pas dans le code VB.
> > > Il faut que je fasse plusieurs fonctions différentes?
> > >
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > C'est aussi le but que j'esperais atteindre avec cette declaration. Tu as essaye de la mettre et de ne passer qu'1 seul param ?
> > > > BruNews, ciao...
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Bah non parce que le but c'est que l'appel en VB ne fasse pas apparaitre le deuxième argument
> > > > > l'idée est de ne mettre que le 1er paramètre et l'autre uniquement si on n'en na besoin.
> > > > >
> > > > > A l'aide !!!!!!
> > > > >
> > > > >
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > Tu peux pas mettre aussi declaration du param par defaut dans VB ???
> > > > > > Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String, ByVal l As Long = 100) As Integer
> > > > > > ou un truc du genre.
> > > > > > BruNews, ciao...
> > > > > >
> > > > > >
> > > > > > -------------------------------
> > > > > > Réponse au message :
> > > > > > -------------------------------
> > > > > >
> > > > > > > Salut
> > > > > > >
> > > > > > > je voudrais en fait faire un passage de paramètre a une fonction dont un a une valeur par défaut. (puis inclure ca dnas une DLL)
> > > > > > > Par exemple une fonction possède 2 aparamètre et si je veux, je ne passe que le 1er lors de l'appel et l'autre prend automatiquement une valeur qu'on lui attribu par défo.
> > > > > > >
> > > > > > > Ce qui donne ceci en C :
> > > > > > >
> > > > > > > int fonction(char * , int =100);
> > > > > > >
> > > > > > > void main(void)
> > > > > > > {
> > > > > > > //variable de retour
> > > > > > > int retour = 0;
> > > > > > > //paramètre
> > > > > > > char chaine[20] = "helloworld";
> > > > > > >
> > > > > > > //La je ne passe que le char* donc le int prends la valeur 100
> > > > > > > retour = fonction(chaine);
> > > > > > > }
> > > > > > >
> > > > > > > int fonction(char * fchaine, int fentier )
> > > > > > > {
> > > > > > > fchaine[0] = 'a';
> > > > > > >
> > > > > > > if( fentier == 100)
> > > > > > > fentier = fentier + 10;
> > > > > > > else
> > > > > > > fentier = fentier + 2;
> > > > > > >
> > > > > > > return fentier;
> > > > > > > }
> > > > > > >
> > > > > > > Bon voila, ca ca marche !
> > > > > > >
> > > > > > > maintenant je voudrais mettre la fonction dans une DLL et l'appelé en VB.
> > > > > > > Eh bien ca ne fonctionne pas !
> > > > > > > Voila le code que j'ai dans le .cpp de ma dll (je vous ai mis que le code principal)
> > > > > > > #include "dll_MA.h"
> > > > > > > int EXPORT FonctionMA(char * chaine, int entier)
> > > > > > > {
> > > > > > > chaine[0] = 19;
> > > > > > > entier ++;
> > > > > > > return entier;
> > > > > > > }
> > > > > > > et dans le .h
> > > > > > > int EXPORT FonctionMA(char *,int = 100);
> > > > > > >
> > > > > > > En ce qui concerne le code VB
> > > > > > > Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String) As Integer
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Private Sub btn_Ecrire_Click()
> > > > > > > Dim Retour As Integer
> > > > > > > Dim text As String
> > > > > > >
> > > > > > > text = "letexte"
> > > > > > > Retour = Dllfonction(text)
> > > > > > > End Sub
> > > > > > >
> > > > > > > En fait ma dll fonctionne quand je n'ai pas de paramètrre par défaut, donc il doit y avoir une astuce pour ce type de paramètres mais la je ne vois pas.... :o(
> > > > > > >
> > > > > > > Quelqu'un a t-il déja fais un truc similaire?
> > > > > > >
> > > > > > > Merci beaucoup d'avance, car moi j'en peu plus !!!!!!
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>
vendredi 11 avril 2003 à 13:57:45 | Re : Pour les doués, moi j'en peu plus !

sena

Excuse moi pour ma lenteur mais je crois que jétais "enfermé" dans mon idée

Eh bien maintenant excuse mon INCOMPETENCE
mais peux tu me dire ce que tu entends par: "tu en fais deux modèles"?
Je peux faire deux fonctions portant le meme nom mais n'ayant pas le mème nombre d'arguments? (j'a déjà fais avec des type diff. mais pas avec un nb d'arg diférent donc je sais po si c'est faisable...si oui, comment?)

Peux tu me guider STP? (et ce sera fini je t'embète plus...)

MERCI BEAUCOUP POUR TOUT !
DES ESPRITS AUSSI SOLIDAIRES IL EN FAUDRAIT UN PEU PLUS DANS LE MONDE ....


-------------------------------
Réponse au message :
-------------------------------

> Voila que tu as saisi, sinon qui dira a ta dll combien de params sont passés. Tu en fais 2 modeles et le tour est joué.
> BruNews, ciao...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> >
> >
> > Ah oui tu veux dire que je suis obligé de déclarer tous mes paramètres en VB.
> > Et l'initialistaion de mes paramètres se fait dans le code VB et pas dans la DLL?
> >
> > Mince....
> > J'aurais voulu faire comme avec une fonction C, c'est a dire comme le bout de code que j'ai mis tout a l'heure :
> > Si on appelle la fonction avec un seul paramètre l'autre est initialisé automatiquement ....
> >
> > Donc en fait mon idée n'est pas faisable avec une dll c'est ca?
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > et ..., ByVal l = 100 As Long)
> > > Tu ne dois pas te faire passer 1 seul parm sans le savoir, ta dll doit remonter ESP de 8 octets et si 1 seul param passé par VB fera badaboum.
> > > BruNews, ciao...
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Ouais mais la compilation ne passe pas si on initialise le 2nd paramètre comme dans la ligne que tu m'as filé.
> > > > mais j'aimerais en fait que l'initialisation ne se fasse QUE dans la dll et pas dans le code VB.
> > > > Il faut que je fasse plusieurs fonctions différentes?
> > > >
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > C'est aussi le but que j'esperais atteindre avec cette declaration. Tu as essaye de la mettre et de ne passer qu'1 seul param ?
> > > > > BruNews, ciao...
> > > > >
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > Bah non parce que le but c'est que l'appel en VB ne fasse pas apparaitre le deuxième argument
> > > > > > l'idée est de ne mettre que le 1er paramètre et l'autre uniquement si on n'en na besoin.
> > > > > >
> > > > > > A l'aide !!!!!!
> > > > > >
> > > > > >
> > > > > >
> > > > > > -------------------------------
> > > > > > Réponse au message :
> > > > > > -------------------------------
> > > > > >
> > > > > > > Tu peux pas mettre aussi declaration du param par defaut dans VB ???
> > > > > > > Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String, ByVal l As Long = 100) As Integer
> > > > > > > ou un truc du genre.
> > > > > > > BruNews, ciao...
> > > > > > >
> > > > > > >
> > > > > > > -------------------------------
> > > > > > > Réponse au message :
> > > > > > > -------------------------------
> > > > > > >
> > > > > > > > Salut
> > > > > > > >
> > > > > > > > je voudrais en fait faire un passage de paramètre a une fonction dont un a une valeur par défaut. (puis inclure ca dnas une DLL)
> > > > > > > > Par exemple une fonction possède 2 aparamètre et si je veux, je ne passe que le 1er lors de l'appel et l'autre prend automatiquement une valeur qu'on lui attribu par défo.
> > > > > > > >
> > > > > > > > Ce qui donne ceci en C :
> > > > > > > >
> > > > > > > > int fonction(char * , int =100);
> > > > > > > >
> > > > > > > > void main(void)
> > > > > > > > {
> > > > > > > > //variable de retour
> > > > > > > > int retour = 0;
> > > > > > > > //paramètre
> > > > > > > > char chaine[20] = "helloworld";
> > > > > > > >
> > > > > > > > //La je ne passe que le char* donc le int prends la valeur 100
> > > > > > > > retour = fonction(chaine);
> > > > > > > > }
> > > > > > > >
> > > > > > > > int fonction(char * fchaine, int fentier )
> > > > > > > > {
> > > > > > > > fchaine[0] = 'a';
> > > > > > > >
> > > > > > > > if( fentier == 100)
> > > > > > > > fentier = fentier + 10;
> > > > > > > > else
> > > > > > > > fentier = fentier + 2;
> > > > > > > >
> > > > > > > > return fentier;
> > > > > > > > }
> > > > > > > >
> > > > > > > > Bon voila, ca ca marche !
> > > > > > > >
> > > > > > > > maintenant je voudrais mettre la fonction dans une DLL et l'appelé en VB.
> > > > > > > > Eh bien ca ne fonctionne pas !
> > > > > > > > Voila le code que j'ai dans le .cpp de ma dll (je vous ai mis que le code principal)
> > > > > > > > #include "dll_MA.h"
> > > > > > > > int EXPORT FonctionMA(char * chaine, int entier)
> > > > > > > > {
> > > > > > > > chaine[0] = 19;
> > > > > > > > entier ++;
> > > > > > > > return entier;
> > > > > > > > }
> > > > > > > > et dans le .h
> > > > > > > > int EXPORT FonctionMA(char *,int = 100);
> > > > > > > >
> > > > > > > > En ce qui concerne le code VB
> > > > > > > > Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String) As Integer
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Private Sub btn_Ecrire_Click()
> > > > > > > > Dim Retour As Integer
> > > > > > > > Dim text As String
> > > > > > > >
> > > > > > > > text = "letexte"
> > > > > > > > Retour = Dllfonction(text)
> > > > > > > > End Sub
> > > > > > > >
> > > > > > > > En fait ma dll fonctionne quand je n'ai pas de paramètrre par défaut, donc il doit y avoir une astuce pour ce type de paramètres mais la je ne vois pas.... :o(
> > > > > > > >
> > > > > > > > Quelqu'un a t-il déja fais un truc similaire?
> > > > > > > >
> > > > > > > > Merci beaucoup d'avance, car moi j'en peu plus !!!!!!
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>
vendredi 11 avril 2003 à 14:09:24 | Re : Pour les doués, moi j'en peu plus !

sena

C'est bon j'ai testé deux fonctions ayant le meme nom mais po le meme nbre d'arg. CA MARCHE !
ne me reste plus ka tester ca avec une DLL mais ca devrait aller.
Merci encore pour tout :o)





-------------------------------
Réponse au message :
-------------------------------

> Excuse moi pour ma lenteur mais je crois que jétais "enfermé" dans mon idée
>
> Eh bien maintenant excuse mon INCOMPETENCE
> mais peux tu me dire ce que tu entends par: "tu en fais deux modèles"?
> Je peux faire deux fonctions portant le meme nom mais n'ayant pas le mème nombre d'arguments? (j'a déjà fais avec des type diff. mais pas avec un nb d'arg diférent donc je sais po si c'est faisable...si oui, comment?)
>
> Peux tu me guider STP? (et ce sera fini je t'embète plus...)
>
> MERCI BEAUCOUP POUR TOUT !
> DES ESPRITS AUSSI SOLIDAIRES IL EN FAUDRAIT UN PEU PLUS DANS LE MONDE ....
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Voila que tu as saisi, sinon qui dira a ta dll combien de params sont passés. Tu en fais 2 modeles et le tour est joué.
> > BruNews, ciao...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > >
> > >
> > > Ah oui tu veux dire que je suis obligé de déclarer tous mes paramètres en VB.
> > > Et l'initialistaion de mes paramètres se fait dans le code VB et pas dans la DLL?
> > >
> > > Mince....
> > > J'aurais voulu faire comme avec une fonction C, c'est a dire comme le bout de code que j'ai mis tout a l'heure :
> > > Si on appelle la fonction avec un seul paramètre l'autre est initialisé automatiquement ....
> > >
> > > Donc en fait mon idée n'est pas faisable avec une dll c'est ca?
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > et ..., ByVal l = 100 As Long)
> > > > Tu ne dois pas te faire passer 1 seul parm sans le savoir, ta dll doit remonter ESP de 8 octets et si 1 seul param passé par VB fera badaboum.
> > > > BruNews, ciao...
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Ouais mais la compilation ne passe pas si on initialise le 2nd paramètre comme dans la ligne que tu m'as filé.
> > > > > mais j'aimerais en fait que l'initialisation ne se fasse QUE dans la dll et pas dans le code VB.
> > > > > Il faut que je fasse plusieurs fonctions différentes?
> > > > >
> > > > >
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > C'est aussi le but que j'esperais atteindre avec cette declaration. Tu as essaye de la mettre et de ne passer qu'1 seul param ?
> > > > > > BruNews, ciao...
> > > > > >
> > > > > >
> > > > > > -------------------------------
> > > > > > Réponse au message :
> > > > > > -------------------------------
> > > > > >
> > > > > > > Bah non parce que le but c'est que l'appel en VB ne fasse pas apparaitre le deuxième argument
> > > > > > > l'idée est de ne mettre que le 1er paramètre et l'autre uniquement si on n'en na besoin.
> > > > > > >
> > > > > > > A l'aide !!!!!!
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > -------------------------------
> > > > > > > Réponse au message :
> > > > > > > -------------------------------
> > > > > > >
> > > > > > > > Tu peux pas mettre aussi declaration du param par defaut dans VB ???
> > > > > > > > Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String, ByVal l As Long = 100) As Integer
> > > > > > > > ou un truc du genre.
> > > > > > > > BruNews, ciao...
> > > > > > > >
> > > > > > > >
> > > > > > > > -------------------------------
> > > > > > > > Réponse au message :
> > > > > > > > -------------------------------
> > > > > > > >
> > > > > > > > > Salut
> > > > > > > > >
> > > > > > > > > je voudrais en fait faire un passage de paramètre a une fonction dont un a une valeur par défaut. (puis inclure ca dnas une DLL)
> > > > > > > > > Par exemple une fonction possède 2 aparamètre et si je veux, je ne passe que le 1er lors de l'appel et l'autre prend automatiquement une valeur qu'on lui attribu par défo.
> > > > > > > > >
> > > > > > > > > Ce qui donne ceci en C :
> > > > > > > > >
> > > > > > > > > int fonction(char * , int =100);
> > > > > > > > >
> > > > > > > > > void main(void)
> > > > > > > > > {
> > > > > > > > > //variable de retour
> > > > > > > > > int retour = 0;
> > > > > > > > > //paramètre
> > > > > > > > > char chaine[20] = "helloworld";
> > > > > > > > >
> > > > > > > > > //La je ne passe que le char* donc le int prends la valeur 100
> > > > > > > > > retour = fonction(chaine);
> > > > > > > > > }
> > > > > > > > >
> > > > > > > > > int fonction(char * fchaine, int fentier )
> > > > > > > > > {
> > > > > > > > > fchaine[0] = 'a';
> > > > > > > > >
> > > > > > > > > if( fentier == 100)
> > > > > > > > > fentier = fentier + 10;
> > > > > > > > > else
> > > > > > > > > fentier = fentier + 2;
> > > > > > > > >
> > > > > > > > > return fentier;
> > > > > > > > > }
> > > > > > > > >
> > > > > > > > > Bon voila, ca ca marche !
> > > > > > > > >
> > > > > > > > > maintenant je voudrais mettre la fonction dans une DLL et l'appelé en VB.
> > > > > > > > > Eh bien ca ne fonctionne pas !
> > > > > > > > > Voila le code que j'ai dans le .cpp de ma dll (je vous ai mis que le code principal)
> > > > > > > > > #include "dll_MA.h"
> > > > > > > > > int EXPORT FonctionMA(char * chaine, int entier)
> > > > > > > > > {
> > > > > > > > > chaine[0] = 19;
> > > > > > > > > entier ++;
> > > > > > > > > return entier;
> > > > > > > > > }
> > > > > > > > > et dans le .h
> > > > > > > > > int EXPORT FonctionMA(char *,int = 100);
> > > > > > > > >
> > > > > > > > > En ce qui concerne le code VB
> > > > > > > > > Public Declare Function Dllfonction Lib "dll_MA.dll" Alias "FonctionMA" (ByVal chaine As String) As Integer
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Private Sub btn_Ecrire_Click()
> > > > > > > > > Dim Retour As Integer
> > > > > > > > > Dim text As String
> > > > > > > > >
> > > > > > > > > text = "letexte"
> > > > > > > > > Retour = Dllfonction(text)
> > > > > > > > > End Sub
> > > > > > > > >
> > > > > > > > > En fait ma dll fonctionne quand je n'ai pas de paramètrre par défaut, donc il doit y avoir une astuce pour ce type de paramètres mais la je ne vois pas.... :o(
> > > > > > > > >
> > > > > > > > > Quelqu'un a t-il déja fais un truc similaire?
> > > > > > > > >
> > > > > > > > > Merci beaucoup d'avance, car moi j'en peu plus !!!!!!
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

1 2

Cette discussion est classée dans : fonction, int, dll, char, fentier


Répondre à ce message

Sujets en rapport avec ce message

tableaux de chaines en argument de fonction [ par ashboody ] je dispose d'une fonction connect a laquelle je doit passer un tableau de chaine char **RegisteredChannels_Name. Pour cela je déclare mon tableau dans Pointeurs et Desallocation [ par gilimcce ] Bonjour à tous....je declare une fonctionloadJpegImage(char *, unsigned char*, int*, int*)1e parametre : le chemin de l'image chargee2e // [C] Méthode (Fonction, procédure) interne, locale [ par nitrique ] Bonjour @ tous,J'aimerais faire un fonction locale (c'est à dire: Dans ma fonction)Mais ça pête.int SaisiePasse(char matricule[lMaxCode]) {    char to Variable de type char [ par wolfcyber ] bonjour, J'aimerais savoir l'equivalent en C++ de la fonction "Mid(int nStart,int nCount)" de la classe CString, pour une variable de type char. Cet Uttilisation la fonction d'une DLL [ par aDebhian ] Pour ce faire, j'ai lu msdn, codes-sources et j'en suis arrivé à ceci: [FONCTION DLL] extern "C" __declspec(dllexport) int tests(int test) {     retu linker une dll sous dev-c++ [ par the diouk ] petite question toute bête mais qui me gêne :j'utilise une DLL, dans ma source il y a bien :#define TRUCDLL "TRUC.dll";le prototype de la fonction :in Problème d'appel de fonction d'une DLL en C [ par richard22 ] Bonjour Voici mon problème: je réalise une DLL avec cette fonction: DLLIMPORT int Algo(int **result) {    etc...    } et dans un fichier .h : #ifn lire char* a dans Dll int _stdcall runappli(char* a) [ par Fwdavy ] Je realise une Dll c++, pour être lue par VB du style :int _stdcall runappli(char* a, char* b,int c) La Dll se lance bien mais je voudrais être sur qu probleme de dll [ par lamoueste ] j'ai un probleme avec ma dll : il s'agit d'une fonction qui doit lance une fenetre (dialog box ) en modal mais j'ai une "assertion failed" :( et je ne


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,764 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales