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 :

Apeller fonction DLL avec pointeurs en Delphi


Sujet :

Delphi

  1. #1
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut Apeller fonction DLL avec pointeurs en Delphi
    Bonjour à tous,

    J'ai une DLL qui possède cette fonction selon la doc:
    NoMangle long DLL_IMPORT_EXPORT csp2GetCodeType(unsigned char CodeId, char *CodeType, long nMaxLength)
    Elle est censée remplir CodeType depuis CodeId en le transformant un peu...

    Je la déclare en Delphi comme ça:
    function csp2GetCodeType(CodeId: Char; var CodeType: Char; nMaxLength: Integer): Integer; stdcall; external NomDLL;

    Ensuite, je l'apelle comme ça:
    var tampon,tampon2: array[0..512] of Char;
    ...
    csp2GetCodeType(tampon[1],tampon2[1],30);
    Memo1.Lines.Add('Packet: '+tampon+' => CodeType:'+tampon2);

    Ou est le problème ?

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 275
    Points : 493
    Points
    493
    Par défaut
    bonjour,

    unsigned char CodeId : octet non signé pour moi c un byte
    char *CodeType : pointeur sur des caractères<=>chaine à zéro terminalen delphi


    j'utiliserais donc plutot ceci :


    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
     
    function csp2GetCodeType(CodeId: byte; CodeType: PChar; nMaxLength: Integer): Integer; stdcall; external NomDLL;
     
    ...
     
    var 
      tampon : byte;
      tampon2 : PChar;
    ...
    begin
      getmem(tampon2, MAXLENGTH);
      try
        csp2GetCodeType(tampon,tampon2,MAXLENGTH);  
        Memo1.Lines.Add('Packet: '+inttostr(tampon)+' =>   CodeType:'+strpas(tampon2));
      finally
        dispose(tampon2)
      end;
    end;

  3. #3
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Bonjour madfu,

    En fait, j'ai mis CodeId en integer et CodeType en Pchar

    Ensuite, j'ai envoyé integer(pointer(tampon[1])) et tampon2

    Merci pour ton aide.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/09/2009, 12h25
  2. Réponses: 2
    Dernier message: 27/03/2009, 23h01
  3. [WinCE5.0] Dll-Appel de fonction avec pointeur
    Par Bart_lx dans le forum Windows
    Réponses: 11
    Dernier message: 11/12/2007, 12h43
  4. [WD10] Utiliser une fonction OpenGL avec pointeur (int)
    Par Zoons dans le forum WinDev
    Réponses: 3
    Dernier message: 06/07/2006, 17h38
  5. Réponses: 3
    Dernier message: 16/06/2004, 12h26

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