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

VB.NET Discussion :

VB.net et dll Delphi


Sujet :

VB.NET

  1. #1
    Membre émérite Avatar de Cpt Anderson
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 624
    Points : 2 479
    Points
    2 479
    Par défaut VB.net et dll Delphi
    Bonjour à tous,

    première fois que je met les pieds dans cette partie du forum car je travaille exclusivement en Pascal objet avec l'EDI Delphi, d'où mon problème quand je m'aventure avec VB.net

    Le problème est le suivant : j'ai créé une dll avec Delphi XE10, avec une fonction à l'intérieur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function DllTest2(sName: string): string;StdCall;
    begin
    	result:='Bienvenue '+sName ;
    end ;
    Mon but maintenant est d'appeller cette dll en VB.net.

    Mon code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Class Form1
        Private Declare Auto Function DllTest2 Lib "C:\Users\Utilisateur\Documents\MyDll.dll" Alias "DllTest2" (sname As String) As String
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim maPhrase As String
            maPhrase = DllTest2("merlin")
        End Sub
     
     
    End Class
    En executant ce code, j'ai l'erreur suivante :

    Nom : Erreur.jpg
Affichages : 366
Taille : 69,8 Ko

    J'utilise Visual Studio 2013 avec le framework 4 ou 4.5.

    Quelqu'un peut-il m'aider sur ce sujet ?
    Voici la méthode de mon chef:

    copy (DateTimeToStr(Now),7,4)+
    copy (DateTimeToStr(Now),4,2)+copy (DateTimeToStr(Now),1,2)+copy (DateTimeToStr(Now),12,2)+
    copy (DateTimeToStr(Now),15,2)+copy (DateTimeToStr(Now),18,2)

    Je lui ai dit que FormatDateTime irait surement mieux


  2. #2
    Membre éclairé Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 667
    Points
    667
    Par défaut
    Citation Envoyé par Cpt Anderson Voir le message
    En executant ce code, j'ai l'erreur suivante :

    Nom : Erreur.jpg
Affichages : 366
Taille : 69,8 Ko
    Salut,
    Après une petite recherche sur le web. Il y a notamment cela.
    Merci de ainsi que d'utiliser les boutons et

  3. #3
    Membre émérite Avatar de Cpt Anderson
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 624
    Points : 2 479
    Points
    2 479
    Par défaut
    Citation Envoyé par r.morel Voir le message
    Salut,
    Après une petite recherche sur le web. Il y a notamment cela.
    Bonjour, les deux systèmes d'exploitations sont les mêmes : Windows 7 64 bits.
    Voici la méthode de mon chef:

    copy (DateTimeToStr(Now),7,4)+
    copy (DateTimeToStr(Now),4,2)+copy (DateTimeToStr(Now),1,2)+copy (DateTimeToStr(Now),12,2)+
    copy (DateTimeToStr(Now),15,2)+copy (DateTimeToStr(Now),18,2)

    Je lui ai dit que FormatDateTime irait surement mieux


  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,
    Les types string en Delphi et DotNet ne sont pas compatibles. Il faut passer par un PChar qui correspond à un PWideChar depuis Delphi 10 si ma mémoire est bonne :

    Code Delphi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function DllTest(sName: PChar) : PChar; StdCall;
    var s : String;
    begin
        s := 'Hello ' + sName;
        result := PChar(s);
    end;
    Code VB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Declare Auto Function DllTest Lib "D:\Dev\DelphiXE10\TestDll\Win32\Debug\myDll.dll" Alias "DllTest" (sname As String) As IntPtr
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Dim Msg As String = Marshal.PtrToStringAuto(DllTest("World"))
    End Sub

  5. #5
    Membre émérite Avatar de Cpt Anderson
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 624
    Points : 2 479
    Points
    2 479
    Par défaut
    Bonjour,

    merci pour la réponse mais le problème ne semble pas venir de là, l'erreur est :

    tentative de chargement d'un programme de format incorrect
    Certainement au chargement de la dll Delphi.

    Nom : Erreur.jpg
Affichages : 252
Taille : 69,8 Ko
    Voici la méthode de mon chef:

    copy (DateTimeToStr(Now),7,4)+
    copy (DateTimeToStr(Now),4,2)+copy (DateTimeToStr(Now),1,2)+copy (DateTimeToStr(Now),12,2)+
    copy (DateTimeToStr(Now),15,2)+copy (DateTimeToStr(Now),18,2)

    Je lui ai dit que FormatDateTime irait surement mieux


  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Effectivement, c'est une autre erreur. Le lien de r.morel aurait pu te mettre sur la voie : Ta Dll doit être compilée en 64 bit et ton programme en 32 ou l'inverse.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/07/2006, 16h44
  2. Tuto DLL delphi .NET
    Par the big ben 5 dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 17/01/2006, 10h15
  3. DLL Delphi utilisée sous VB.NET
    Par slimjoe dans le forum Langage
    Réponses: 2
    Dernier message: 09/01/2006, 00h12
  4. [VB.NET] Comment gérer une DLL Delphi ?
    Par slimjoe dans le forum VB.NET
    Réponses: 2
    Dernier message: 09/01/2006, 00h10
  5. Declarer une dll Delphi ?
    Par DelphiCool dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/07/2002, 10h07

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