Merci beaucoup pour ces réponses, ça me permet d'avancer. Pour le Howto, c'est une très bonne idée, si j'arrive au bout de l'exploit !
Cordialement,
Guillaume
Bonjour,
Quelques avis sur tes questions - quoique je n'utilise pas les appels de
DLL -
Le 2005-02-18 11:37, [EMAIL PROTECTED] a écrit :
> Bonjour,
>
> J'utilise l'instruction Declare pour appeler les fonctions d'une DLL, et
> j'ai 2 questions sur ce sujet :
> - il semble qu'on ne puisse pas remplacer le nom de la DLL "nom.dll" par
> une constante prédéfinie de type string (ce n'est pas possible non plus en
> Visual Basic). Y a-t-il une impossiblité réelle ? En effet, ce serait bien
> pratique pour définir 30 fonctions de la DLL, avec toujours le même nom et
> le même chemin, absolu donc à rallonge, et susceptible de changer ! Et en
> fin de compte, c'est illisible.
Effectivement, je vois qu'utiliser une constante déclenche une erreur de
syntaxe. Mais tu peux découper la déclaration en plusieurs lignes:
Declare Function Fonction_En_C _
Lib "Ma_bibli.dll" _
(ByVal param1 As Integer, param2 As Integer) As Integer
La deuxième ligne sera ainsi toujours la même, si ça peut te consoler.
> - comment déclarer le type pointeur (d'une fonction d'une DLL) et comment
> l'utiliser ? N'hésitez pas à me corriger si je me trompe.
> Cas avec un pointeur dans les paramètres :
> int Fonction_En_C(int param1, int* param2);
> => Declare Function Fonction_En_C Lib "Ma_bibli.dll" (ByVal param1
> As Integer, param2 As Integer) As Integer
Cela correspond aux explications de l'aide en ligne. Mais il faut être
sûr que Integer est équivalent à int du C. Basic Integer est une valeur
sur 16 bits.
> Cas moins simple avec un pointeur dans la fonction :
> char* Fonction_En_C(int param1, int* param2);
> => ???
Alors là, ça se corse, Basic ne permet pas de voir l'aspect pointeur.
Je suggère d'utiliser : As Variant
Et je m'attendrais à obtenir dans le Variant un tableau. Mais Basic n'a
pas de type caractère. Alors Basic pourrait convertir le retour de la
fonction en un tableau de Integer. À moins qu'il ne renvoie un String...
Tu peux essayer de stocker le résultat de la fonction dans une variable
Variant et en visualiser le contenu avec Xray.
>
> P.S. Pour ceux intéressés par le contrôle d'équipement par GPIB, j'ai déjà
> réussi à utiliser la DLL "Gpib32.dll" pour commander mes appareils. Ca
> s'annonce bien !
>
Bravo! quand tu auras résolu tes problèmes, penses à faire un petit
HowTo des astuces à connaître.
Bon courage,
Bernard