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 :

DLL et Excel


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 16
    Points : 19
    Points
    19
    Par défaut DLL et Excel
    Bonjour,
    Quand je recompile sous Delphi 11 mes dll créées avec Delphi 7, les chaînes de caractères passées en PChar ne sont pas prises en compte par les fonctions quand la dll est appelée par Excel ou par un programme compilé en Delphi 7.
    Si j'appelle la dll recompilée par Delphi 11 par un programme compilé par Delphi 11, l’argument en PChar est bien transmis et traité par la fonction.
    Quel est le problème ?

    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
    19
    library Dll;
     
    uses
      Windows, SysUtils;
     
    {$R *.res}
     
    Function Texte1(const aTexte: PChar): Boolean; stdcall;
     
    begin
      MessageBox(0, aTexte, 'Texte1', mb_ok);
      Result := true;
    end;
     
    Exports
      Texte1;
     
    begin
    end.
    Merci pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,


    Depuis D2008 et l'apparition de l'UNICode dans Delphi les Pchar sont en fait de PWideChar alors que pour les versions antérieures ce sont des PAnsiChar

    Citation Envoyé par ch16089 Voir le message
    Les chaînes de caractères passées en PChar ne sont pas prises en compte
    Conclusion: il faut forcer la déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function Texte1(const aTexte: PAnsiChar): Boolean; stdcall;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 16
    Points : 19
    Points
    19
    Par défaut
    Bonjour,
    Merci pour la solution, j'avais oublié cette évolution depuis D2008 et que j'avais bien pris en compte dans d'autres dll !

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

Discussions similaires

  1. Problème d'accès dll VBA/Excel
    Par corky813 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/05/2012, 21h11
  2. Excel et C++ dll (sans Excel)
    Par pavel dans le forum C++
    Réponses: 0
    Dernier message: 25/08/2011, 11h17
  3. [XL-2003] Impossible d'utiliser une dll depuis excel
    Par bossun dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/08/2009, 14h19
  4. Equivalent OWC11.dll pour Excel 2007
    Par Youpititi dans le forum Excel
    Réponses: 6
    Dernier message: 19/03/2009, 08h38
  5. Utiliser une fonction d'une DLL dans Excel
    Par archonte dans le forum Excel
    Réponses: 5
    Dernier message: 11/05/2007, 23h14

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