Accueil > Forum > > > > Pour les doués, moi j'en peu plus !
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
|
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
|
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
|
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
|
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 !!!!!! > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
|
|
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
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|