IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

dll utilisable avec VBAccess 97


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Mü est déconnecté
    Membre averti
    Inscrit en
    Février 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 20
    Par défaut dll utilisable avec VBAccess 97
    Bonjour à tous,

    Voilà, je voudrais créer une dll utilisable avec des programmes VBAccess 97. Mais je n'arrive pas à charger la dll.
    Le message est à chaque fois "can't add a reference to the specified file".

    Pour tester, j'ai repris le code d'un tutorial sur le site.

    Pouvez-vous me dire ce qu'il faut que je fasse pour que VBAcces prenne cette dll en compte?

    Voici donc mon code Delphi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    library ConvEur;
     
    Const
    DevEuro=6.55957;
    function ConvertEuro(Montant:double):double; stdcall;
    begin
      Result:=Montant*DevEuro;
    end;
     
    function ConvertFranc(Montant:double):double; stdcall;
    begin
      Result:=Montant/DevEuro;
    end;
     
    exports
      ConvertEuro,
      ConvertFranc;
    begin
      {partie initialisation de la dll}
    end.

    Merci d'avance.


    [modéré par Pascal Jankowski]
    Pensez à ajouter les balises de code afin d'apporter une plus grande lisibilité dans vos posts: Merci

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    je n'ai jamais fait, mais dans un premier temps modifie stdcall par cdecl.
    Ensuite donne-nous le code de déclaration et d'appel de la DLL en VBA.
    Le type currency est peut être préférable ?

  3. #3
    Mü est déconnecté
    Membre averti
    Inscrit en
    Février 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 20
    Par défaut
    Voici la déclaration de la dll dans VBA:

    Tout d'abord, j'écris dans un module ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Declare Function ConvertEuro Lib "D:\DELPHI\DELPHI\Exercices\Dll\mes\ConvEur.dll" (cpt As Double) As Double

    Ensuite, dans le formulaire, je fais un appel du genre...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub test_Click()
       Dim cpt As Double
       cpt = ConvertEuro(6)
       MsgBox cpt, vbOKOnly
    End Sub

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Ok, as-tu modifié la convention d'appel ?
    As-tu égalemment un pb d'appel avec une API Win32 ?

  5. #5
    Mü est déconnecté
    Membre averti
    Inscrit en
    Février 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 20
    Par défaut
    Citation Envoyé par Laurent Dardenne
    Ok, as-tu modifié la convention d'appel ?
    As-tu égalemment un pb d'appel avec une API Win32 ?
    Oui, je l'ai modifier, mais le problème est résolu.

    En fait, je n'avais pas défini de point d'entrée dans la dll. Du coups, le programme VBA accédait à la dll mais ne pouvais pas identifier clairement la fonction appelée.

    J'ai donc indexé mes fonctions à l'export de celles-ci sous delphi.

    exemples:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    exports
         ConvertFranc index 12;

    Ensuite, sous VBA, j'ai défini un alias par le numéro d'index:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Declare Function ConvertFranc Lib "D:\DELPHI\DELPHI\Exercices\Dll\mes\ConvEur.dll" Alias "#12" (ByVal cpt As Double) As Double
    Merci d'avoir suivi mon problème.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser une DLL Delphi avec C#
    Par h8ciz dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/09/2007, 16h46
  2. Dll C++ avec MFC utilisée en C#
    Par Nico_stras dans le forum C++/CLI
    Réponses: 23
    Dernier message: 07/01/2007, 18h03
  3. Utilisation de dll personelle avec VB.NET
    Par yakay dans le forum VB.NET
    Réponses: 1
    Dernier message: 14/12/2006, 09h18
  4. utilisation dll creer avec visual studio
    Par CaptainChoc dans le forum VC++ .NET
    Réponses: 3
    Dernier message: 17/08/2006, 22h07
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo