

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
3 messages in org.openoffice.fr.progRe: [prog] instruction declare et con...| From | Sent On | Attachments |
|---|---|---|
| guil...@philips.com | Feb 18, 2005 2:36 am | |
| Bernard Marcelly | Feb 18, 2005 9:41 am | |
| guil...@philips.com | Feb 21, 2005 4:46 am |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread Paste this link in email or IM: |
| Atom feed for this thread Paste this URL into your reader: |
| Subject: | Re: [prog] instruction declare et controle d'appareils de mesures par GPIB | Actions... |
|---|---|---|
| From: | Bernard Marcelly (marc...@club-internet.fr) | |
| Date: | Feb 18, 2005 9:41:52 am | |
| List: | org.openoffice.fr.prog | |
Bonjour, Quelques avis sur tes questions - quoique je n'utilise pas les appels de DLL -
Le 2005-02-18 11:37, guil...@philips.com 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







