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

C Discussion :

recupere une chaine de caracteres d´une Dll crée en C avec une application Delphi


Sujet :

C

  1. #1
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut recupere une chaine de caracteres d´une Dll crée en C avec une application Delphi
    Salut a tout le monde,
    une fois de plus je me remet a vous, car je n´arrive pas a trouver la solution, je m´explique j´ai une fonction ecrite dans une dll ecrite en C qui retourne une chaine de caracteres, la voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #define DllExport   __declspec(dllexport)
     
    char DllExport * copieur(const char *originale)
    {
     
         char *copie=NULL;
     
        copie=malloc((strlen(originale)+1)*sizeof(char));
        strcpy(copie,originale);
     
       return copie;
    }
    et lorsque je veux la recuperer comme ceci du coté de delphi, je recois qu´une chaine non comprehensible voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    DLLFunc           : function(pass: PChar): PChar;
    procedure TForm1.cxButton3Click(Sender: TObject);
    var iResult: Integer;
        s      : AnsiChar;
        Buffer : PChar;
        test   : PChar;
        test2  : AnsiString;
    begin
      getmem(buffer, 20);
    test   := PChar('qwert');
          Buffer := DLLFunc(test);
          test2  := StrPas(DLLFunc(test));
    end;
    merci d´avance pour votre aide.
    Eric

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Il faut utiliser la convention d'appel stdcall - char DllExport * __stdcall copieur(const char *originale) - et exporter la fonction à l'aide d'un fichier de définition de module et non avec declspec. Des ressources qui pourraient t'aider : [Tutoriel] Les DLLs.

  3. #3
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Salut, et merci pour la reponse rapide,
    mais lorsque j´ajoute le __stdcall, du coté de C cela se compile bien , mais du cote de Delphi ca ne marche plus(cela ne s´execute pas).

  4. #4
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Il faut aussi préciser que c'est du stdcall du côté de delphi. Si je me souviens bien la syntaxe c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DLLFunc           : function(pass: PChar): PChar; stdcall;

Discussions similaires

  1. Indexer avec une chaine de caracteres
    Par lolo81 dans le forum Android
    Réponses: 3
    Dernier message: 01/07/2012, 17h39
  2. Réponses: 4
    Dernier message: 07/09/2010, 10h12
  3. Réponses: 7
    Dernier message: 27/05/2008, 10h54
  4. Probleme avec une chaine de caractere
    Par Jim_Nastiq dans le forum Langage
    Réponses: 2
    Dernier message: 07/04/2006, 09h56
  5. Réponses: 6
    Dernier message: 05/04/2006, 11h12

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