problème avec une DLL
problème avec une DLL
Bonjour,
J'ai une DLL qui est récalcitrante sous PB (je l'utilise sous VB6 sans problème)
La fonction suivante fonctionne très bien en PB :
short int GetInsideHumidity_() /* "C" * /
je l'utilise comme ça en PB:
Humidite.w=CallFunction(lib,"GetInsideHumidity_V") ;c'est un "short int"
maintenant une autre fonction mais avec un autre type :
float GetBarometer_V() /* "C" */
Je l'utilise comme ça en PB:
Barometre.f=CallFunction(lib,"GetBarometer_V") ; c'est un float
et la le résultat n'est pas bon.
J'ai testé avec les autres types sans résultat.
Si quelqu'un a une idée !
Merci d'avance
Sébastien
J'ai une DLL qui est récalcitrante sous PB (je l'utilise sous VB6 sans problème)
La fonction suivante fonctionne très bien en PB :
short int GetInsideHumidity_() /* "C" * /
je l'utilise comme ça en PB:
Humidite.w=CallFunction(lib,"GetInsideHumidity_V") ;c'est un "short int"
maintenant une autre fonction mais avec un autre type :
float GetBarometer_V() /* "C" */
Je l'utilise comme ça en PB:
Barometre.f=CallFunction(lib,"GetBarometer_V") ; c'est un float
et la le résultat n'est pas bon.
J'ai testé avec les autres types sans résultat.
Si quelqu'un a une idée !
Merci d'avance
Sébastien
Merci pour cette réponse, néanmoins dans la doc j'ai l'info suivante
"foat refers to a 4 byte floating point"
et cela fonctionne sous VB6 comme ça :
Public Declare Function GetBarometer_V Lib "VantagePro.dll" () As Single
...
Dim ValBarometreSgn As Single
ValBarometreSgn = GetBarometer_V()
donc.... ?
Cordialement
Sébastien
"foat refers to a 4 byte floating point"
et cela fonctionne sous VB6 comme ça :
Public Declare Function GetBarometer_V Lib "VantagePro.dll" () As Single
...
Dim ValBarometreSgn As Single
ValBarometreSgn = GetBarometer_V()
donc.... ?
Cordialement
Sébastien
bah si tu nous dis où trouver la dll, on pourra faire des essais ^^
en charchant sur le net j'ai juste trouvé ca :
http://www.weathermatrix.net/bbs/vantag ... s/350.html
c'est bien un double et pas un single qui est déclaré en VB... peut être que VB (vu que c'est un langage interprêté) est capable de passer ca en Single de facon transparente...
pour la télécharger c'est ici:
http://www.davisnet.com/support/weather ... kdll20.exe
c'est un zip... en le renomant en zip on peut zapper toute la partie automatique
Dri
en charchant sur le net j'ai juste trouvé ca :
http://www.weathermatrix.net/bbs/vantag ... s/350.html
c'est bien un double et pas un single qui est déclaré en VB... peut être que VB (vu que c'est un langage interprêté) est capable de passer ca en Single de facon transparente...
pour la télécharger c'est ici:
http://www.davisnet.com/support/weather ... kdll20.exe
c'est un zip... en le renomant en zip on peut zapper toute la partie automatique
Dri
Dernière modification par Dr. Dri le mar. 13/sept./2005 12:46, modifié 1 fois.
de suite.... elle est ici :
http://www.davisnet.com/support/weather ... vantagedll
Et pour le complément d'info ici :
http://www.davisnet.com/support/weather ... antagecomm
Effectivement avec une déclaration en "Double" dans VB6 ça marche aussi bien (j'ai testé à l'instant)
Merci d'avance
Sébastien[/url]
http://www.davisnet.com/support/weather ... vantagedll
Et pour le complément d'info ici :
http://www.davisnet.com/support/weather ... antagecomm
Effectivement avec une déclaration en "Double" dans VB6 ça marche aussi bien (j'ai testé à l'instant)
Merci d'avance
Sébastien[/url]
Dernière modification par f1roe le mar. 13/sept./2005 12:50, modifié 1 fois.
En passant par de l'assembleur en ligne c'est possible
Faudrait que fred prenne en compte le type de retour pour éviter ce genre de problèmes...
Dri
Code : Tout sélectionner
OpenLibrary(0, "VantagePro.dll")
f.f
CallCFunction(0, "GetDllVersion_V")
!FSTP dword [v_f]
Debug f
Dri
Code : Tout sélectionner
OpenLibrary(0, "VantagePro.dll")
ma_variable.f
CallCFunction(0, "GetDllVersion_V")
!FSTP dword [v_ma_variable]
Debug ma_variable
(t'en fais pas je suis aussi une quiche en assembleur)
Dri