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

 Delphi Discussion :

Dll qui reçoit et retourne des paramètres


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2002
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 19
    Par défaut Dll qui reçoit et retourne des paramètres
    Bonjour,

    Je cherche un exemple d'une dll qui reçoit plusieurs paramètres de type string et qui retourne également une chaîne de caractère de type string également.
    J'ai essayé différentes solutions ca n'a pas marché.

    Si quelqu'un du forum pourrait me mettre sur piste...ce serait coool.

    D'avance merci.

    Chris

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 132
    Par défaut
    Si tu utilises FastShareMem, tu peux échanger des strings comme avec ShareMem+Brldmm.dll mais cela doit rester Delphi à Delphi !

    C'est pourtant écrit en commentaire dans le fichier DPR généré pour une DLL !
    Lit ce sujet DLL String Pourquoi ça marche sans BORLNDMM.DLL

    Fourni déjà ce que tu as écrit côté EXE et côté DLL

    Personnellement, je n'aime pas ShareMem, j'utilise du PChar, PWideChar comme pour les API Windows et des BSTR\WideString lors d'une utilisation dans des interfaces

    Tu as bien sûr consulter la
    Comment passer des strings dans une DLL ?
    Comment passer une chaîne de caractères d'une DLL à une application ?
    Comment partager un objet entre un exécutable (.exe) et une DLL?



    Cherche "DLL String" dans le forum Delphi, tu trouverais plein de chose à lire
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2002
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 19
    Par défaut
    Salut ShaiLeTroll et merci.

    J'ai bien essayé de trouver des exemples sur internet mais, je n'ai pas trouvé d'exemples sur l'échange de données entre dll et un prog tiers.
    Je connais un peu delphi...et c'est plus rapide que du vb donc je me suis décidé pour essayer de trouver une solution.
    J'ai essayé d'implémenter un des exemples trouvé sur le web, qui passe par des pointeurs, bref trop long pour moi.

    Merci pour les liens je vais lire et essayer encore...

    Chris

    Bon dans mon cas de figure je voudrais utiliser une dll depuis un autre langage que delphi...(non pas c++) raison pour laquelle j'ai besoin de faire passer des chaînes de caractère !

    Voici le bout de code que j'ai trouvé sur le web et repris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure GetStr(A: PChar ; B: PChar);stdcall;
    var StrData:Longword absolute B;
    StrDataSizePtr:^Longword;
     
    tmpStr:string;
     
    begin
       tmpStr:=A;
     
    tmpStr:= tmpStr + 'Ceci est un test ' ;
    StrPLCopy(B,tmpStr, Length(tmpStr))
    StrDataSizePtr:=Ptr(StrData-4);
    StrDataSizePtr^:=Length(tmpStr);
    end;

  4. #4
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2002
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 19
    Par défaut Sites Delphi
    Salut,

    Il y a aussi deux sites Delphi intéressants : http://delphi.wikia.com/wiki/Creating_DLLs
    http://www.delphisources.ru/pages/fa...t/LiB0103.html

    Il y a bien plusieurs manières de faire...

    L'exemple du 2ème site est bien mais est-ce appelable par du vba. Il faut que je teste...

    Merci.

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 132
    Par défaut
    Fait donc un Objet COM (Bibliothèqe de Type, ActiveX...), utilise des BSTR, ton objet sera utilisable très facilement en VBS et VBA tant que tu respecte la convention SafeCall !

    C'est ce que je fais lorsque je dois fournir un objet compatible .NET, je le teste en VBS, ainsi je me borne au limite strict du LateBinding alors qu'en Delphi, on peut faire bcp plus de truc que certains langages plus "normés" ne supporte pas (ou ne supporte plus)

    Pour le DLL normales avec Pointeurs, ça c'est pour du C++, .NET unsafe ... et VBS cela ne fonctionnera pas !


    Ton exemple est HIDEUX et semble même totalement incohérent car contenant du code totalement inutile !
    Il nous manque le plus important, l'allocation de B côté EXE !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Fichier qui retourne un paramètre
    Par Mickie dans le forum VBScript
    Réponses: 2
    Dernier message: 29/06/2007, 16h35
  2. Requete qui devrait retourner des resultats.
    Par DjBeGi dans le forum Access
    Réponses: 5
    Dernier message: 01/06/2006, 10h19
  3. Fonction qui retourne plusieurs paramètres
    Par diam's dans le forum Langage
    Réponses: 3
    Dernier message: 03/02/2006, 21h11
  4. Retrouver les valeurs des paramètres des fonctions d'une DLL
    Par Bernard Martineau dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 11h42
  5. Réponses: 6
    Dernier message: 24/02/2005, 10h44

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