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

Répondre à