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

Langage Delphi Discussion :

DLL Delphi utilisée sous VB.NET


Sujet :

Langage Delphi

  1. #1
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut DLL Delphi utilisée sous VB.NET
    Bonjour,

    Peut-être est-ce que cette question devrait (aussi) être posée sous la rubrique .NET mais je la voici quand même.

    J'ai fais une DLL à l'aide de Delphi 7. Voici le code (très simpe):

    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
     
    unit Unit1;
     
    interface
     
    uses Dialogs, SysUtils;
     
    procedure MonTest(i: integer);
     
    exports MonTest;
     
    implementation
     
    procedure MonTest(i: integer);
    begin
       showmessage(IntToStr(i));
    end;
     
    end.
    En gros, la méthode exportée attend un entier et l'affiche dans un message (simple je disais ).

    Si je créé un nouveau projet Delphi et tente d'accéder à la méthode contenue dans la DLL, aucun problème. Tout fonctionne parfaitement.

    Mais si je créé un nouveau projet VB.NET et tente d'exécuter la méthode, le ShowMessage est erroné. Il donne un nombre qui du genre de celui qu'il donnerait lorsqu'une variable n'est pas initialisée.

    Quelqu'un peut m'aider ?


    EDIT: J'ai posé une question semblable sur le forum DOTNET (http://www.developpez.net/forums/vie...500598#2500598)
    -Slimjoe

  2. #2
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    bonjour çà ne viendrait pas du type integer proprement dit ?


    Citation Envoyé par olance.developpez.com
    Si vos DLL sont destinées à être exploitées par des programmes qui ne seront pas nécessairement développés avec Delphi, il vaut donc mieux utiliser des types génériques, non spécifiques à Delphi. Il faudra donc pour cela préférer les types définis par Windows, ou au minimum vérifier que le type de variable que vous vous apprêtez à utiliser correspond bien au type attendu par le programme qui exploitera votre DLL.

    Ainsi, faites attention lorsque vous utilisez des types propres à Delphi. Par exemple, le type integer est défini comme un nombre entier signé de quatre octets. Cependant, dans des versions futures et grâce à l'évolution des architectures des processeurs, ce type pourrait très bien devenir un entier signé de huit octets. Dans ce cas, on pourrait alors avoir de nombreuses violations d'accès ou au mieux des valeurs incohérentes.
    Les types fondamentaux dont les tailles ne sont pas censées changer sont les suivants :


    Shortint : 8 bits signé
    Smallint : 16 bits signé
    Longint : 32 bits signé
    Int64 : 64 bits signé
    Byte : 8 bits non signé
    Word : 16 bits non signé
    Longword : 32 bits non signé

    http://olance.developpez.com/article.../creation-dll/

    il faudrait donc utiliser un longint

    çà peut venir aussi e la convention d'appel : stdcall, par exemple

  3. #3
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut
    Merci!

    J'ai eu ma réponse via le forum .NET (me manquait la directive stdcall) mais il est vrai que c'est mieux d'utiliser des types standards.

    Tout fonctionne parfaitement maintenant!
    Merci encore!
    -Slimjoe

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

Discussions similaires

  1. Utiliser une DLL en C++ sous Delphi
    Par drxel dans le forum Débuter
    Réponses: 5
    Dernier message: 30/08/2011, 13h36
  2. Réponses: 0
    Dernier message: 22/08/2008, 08h30
  3. DLL Delphi pour utilisation sous C++ Builder
    Par kurul1 dans le forum Langage
    Réponses: 8
    Dernier message: 25/06/2008, 10h54
  4. Réponses: 1
    Dernier message: 18/07/2006, 16h44
  5. Réponses: 4
    Dernier message: 28/04/2006, 15h37

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