cs_andrebernard
Messages postés404Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention 4 septembre 2013
-
31 mai 2007 à 13:42
cs_andrebernard
Messages postés404Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention 4 septembre 2013
-
31 mai 2007 à 14:29
Bonjour à tous
Voila, j'utilise des DLL standard non-ActiveX créée avec un autre laguage.
J'arrive bien a les faire marcher mais le probleme c'est qu'a l'interieur de chaque DLL il y a parfois le meme nom de fonction.
Quand je declare la fonction, je me retrouve donc avec :
Private Declare Function Cryptage Lib "P1M1.dll" (ByVal a As String, ByVal a As String) As Long
Private Declare Function Cryptage Lib "N3CAA.dll" (ByVal a As String, ByVal a As String) As Long
Et la bien sur j'ai un message d'erreur du style "Nom ambigu détecté".
Y a t'il un moyen d'eviter cela ????
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 31 mai 2007 à 13:47
utilise les alias :
Private Declare Function Cryptage_P1M1 Lib "P1M1.dll" Alias Cryptage (ByVal a As String, ByVal a As String) As Long
Private Declare Function Cryptage_N3CAA Lib "N3CAA.dll" Alias Cryptage (ByVal a As String, ByVal a As String) As Long
Et dans tn code ensuite, tu utilise Cryptage_P1M1 et Cryptage_N3CAA
cs_andrebernard
Messages postés404Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention 4 septembre 20131 31 mai 2007 à 14:13
Bonjour casy
Je te remercie beaucoup de ta reponse, et de la rapidité a laquelle tu me l'a donné
J'aurais une autre question pour sensiblement le meme probleme.
Est il possible de passer une fonction en argument d'une autre fonction ?
Private Declare Function CryptageP1M1 Lib "P1M1.dll" Alias "Cryptage" (ByVal a As String, ByVal a As String) As Long
Private Declare Function CryptageN3CAA Lib "N3CAA.dll" Alias "Cryptage" (ByVal a As String, ByVal a As String) As Long
Function CoderAlpha(Codage, PhraseACoder)
Dim ChaineDll As String * 400
Dim AdresseChaine As Long
ChDrive (Left(App.Path, 1))
ChDir App.Path
If Dir(App.Path + "" + Codage + ".dll") <> "" Then
AdresseChaine = lstrcpy(ChaineDll, Cryptage(Codage, PhraseACoder))
CoderAlpha = ChaineDll
Else
MsgBox "La Dll " + Codage + ".Dll" + " est absente de " + CurDir
End If
End Function
Car en fait le probleme c'est Cryptage(Codage, PhraseACoder)
Comment lui transmetre une fois CryptageN3CAA(Codage, PhraseACoder)
, une fois CryptageP1M1(Codage, PhraseACoder)
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 31 mai 2007 à 14:19
Ce que tu envoies comme paramètre n'est pas (et ne peut être) une fonction... C'est la valeur retournée par la fonction utilisée ! donc pas de problème !
Par exemple : Cryptage(Codage, PhraseACoder) n'est pas la fonction Cryptage mais la valeur qu'elle retourne quand on l'utilise en lui passant les paramètres Codage et PhraseACoder
cs_andrebernard
Messages postés404Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention 4 septembre 20131 31 mai 2007 à 14:29
Je te remercie de ta reponse.
Mais le probleme c'est que j'ai fait cette procedure expres pour encapsuler cette fonction qui appelle la DLL, car vu que je ne la declare pas dans la BDR il faut absolument qu'elle soit dans le repertoire de l'appli.
Je force donc le chemin courant dans ce repertoire autrement il me dit qu'il ne trouve pas l'acces a la DLL.
Donc je voudrais pouvoir appeler une fois CryptageN3CAA(Codage, PhraseACoder)
et une fois CryptageP1M1(Codage, PhraseACoder) selon mon choix.
Mais que faut il mettre a cette ligne
AdresseChaine = lstrcpy(ChaineDll, Cryptage(Codage, PhraseACoder))
puisque ce n'est pas la meme fonction qui est appelée a chaque fois