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 :

Paramètre Pchar dans une DLL


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 23
    Points : 24
    Points
    24
    Par défaut Paramètre Pchar dans une DLL
    Hello.

    J'ai créé une DLL à l'aide de Delphi 5.
    Voici la définition de la fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function GetFullOcrInfo(   ai_OCR : PChar ;
                           ai_Date : Pchar ;
                           var ao_FaceValue : Double;
                           var ao_Currency : Integer;
                          [b] var ao_BenefValidityDate : Pchar;[/b]
                           [b]var ao_AffiliateValidityDate : Pchar;[/b]
                           var ao_VoucherType : Integer) : integer ;
                           stdcall; external 'EasyScan.dll' name 'GetFullOcrInfo' ;
    J'ai mis en gras les définitions des paramètres qui me posent problème.
    Cette fonction se comporte parfaitement lorsque le programme appelant est développé en Delphi.
    Dans un autre langage (PowerBuilder dans mon cas), je reçois des valeurs bidon.
    Les arguments de type Pchar passés par valeur fonctionnent tout à fait bien contrairement aux arguments de type Pchar passé par référence.


    Quelqu'un a-t-il une idée ?

    Comme d'habitude, un quatrain pour celui qui me donne la solution.

  2. #2
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    enlève le var, il ne sert à rien
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 23
    Points : 24
    Points
    24
    Par défaut Oui mais ...
    Si je fais ça, les arguments me sont retournés vide même dans mon programme appelant Delphi (qui fonctionnait).

  4. #4
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut
    Assure toi que le programme appelant tes fonctions dll est aussi sous le format "stdcall". J'ai connu un soucis un peu identique avec un programme C qui appelé mes dlls (delphi) mais qui n'avait pas les memes declaration des format de DLL, lui etait en "cdecl" ou un truc comme çà ..

    bon courage bye.
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut Re: Oui mais ...
    Citation Envoyé par Writer
    Si je fais ça, les arguments me sont retournés vide même dans mon programme appelant Delphi (qui fonctionnait).
    Ouh la... En fait, ta DLL modifie le PCHar, c'est pour ça que tu veux le mettre en var ? Si c'est le cas, il y a au moins un problème côté programme Delphi, car ça doit marcher sans le var. Par contre, le PChar doit réellement pointer vers un array [0..n] of Char et ne pas être une "conversion sauvage" d'un string effectuée grâce à l'opérateur PChar().
    "It's more fun to compute !"

Discussions similaires

  1. fonction à paramètres variables stockée dans une DLL.
    Par bertrand125 dans le forum Langage
    Réponses: 6
    Dernier message: 26/03/2014, 15h33
  2. Passer un TStringList en paramètre dans une DLL
    Par bubulemaster dans le forum Débuter
    Réponses: 8
    Dernier message: 18/09/2007, 14h14
  3. [BP7] Problème chargement de ressource dans une DLL
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 11
    Dernier message: 26/07/2003, 21h36
  4. PB avec "self" dans une dll
    Par DiJiRiDouS dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2003, 09h32
  5. [VB6]Passage d'un tableau dans une DLL écrite en delphi
    Par flash dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 20/09/2002, 10h15

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