Passage de données à une DLL C++ [VBA] - VB/VBA/VBS - Programmation
Marsh Posté le 22-07-2003 à 22:04:51
Code :
|
Code :
|
Code :
|
Code :
|
Code :
|
Je n'ai pas testé mais c'est comme ca que je ferais.
Marsh Posté le 23-07-2003 à 11:31:18
Non ca ne marche pas, il me demande un seul double quand je fais ca...
Marsh Posté le 23-07-2003 à 14:24:28
Non, il ne demande pas UN SEUL double, mais VB passe les tableau par adresse, donc si tu donnes le premier indice du tableau, c'est bon ... J'ai toujours fait comme ca (avec les mêmes prototes que toi) et ca a toujours fonctionné.
Marsh Posté le 23-07-2003 à 15:42:23
karlkox a écrit : Non, il ne demande pas UN SEUL double, mais VB passe les tableau par adresse, donc si tu donnes le premier indice du tableau, c'est bon ... J'ai toujours fait comme ca (avec les mêmes prototes que toi) et ca a toujours fonctionné. |
J'ai essayé de mettre les proto que tu as dis et d'appeler la fonction comme ca :
Code :
|
mais ca plante pendant l'appel de la Dll... Je pense pas que ca vienne de la Dll pke je l'ai deja testé.
Marsh Posté le 23-07-2003 à 15:46:04
Ah c bon, j'ai trouvé. Il faut mettre ByRef X()... et passer X(0).
Merci
Marsh Posté le 22-07-2003 à 19:38:09
Bonjour,
J'ai un petit probleme, je dois passer des tableaux de données à une Dll ecrite en C++ mais je n'arrive pas à retrouver les bons nombres.
Voila le prototype de la fonction ds la Dll :
et voila comment je l'ai declaré dans VB :
Public Declare Function DllEnvoiDonnees Lib "Communication.dll" Alias "EnvoiDonnees" (ByVal Taille As Long, ByRef X() As Double, ByRef Y() As Double) As Long
Il recupere la taille correctement mais il recupere n'importe quoi au niveau des tableaux.
J'ai aussi un autre probleme avec une autre fonction de la Dll. Ca me fait Runtime error Floating point not load. Je ne comprend pas parce que c'est à peut prés la meme fonction.
et en VB :
Public Declare Function DllEnvoiDonnees2 Lib "Communication.dll" Alias "EnvoiDonnees2" (ByVal Taille As Long, ByVal nom As Long, ByRef Temps() As Double, ByRef X() As Double, ByRef Y() As Double) As Long
Merci