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 :

Pansichar - PwideChar et parametre de fonction DLL


Sujet :

Langage Delphi

  1. #1
    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 Pansichar - PwideChar et parametre de fonction DLL
    Bonjour ,

    Nous avions une DLL codé en Delphi, qui fonctionne très bien sous XP. Cette DLL pouvait être utilisée par une application écrite en Delphi ou par Labview ( codé en C)

    Sur sa migration en W7-64 et XE2 :
    Nous avons remplacés les Pchar(..) par des Pansichar(...) et cela fonctionne avec Labview , mais plus avec l'application Delphi. Dans l'application Delphi le seul et 1er caractères de la chaine passé en paramètre est récupéré par la DLL.

    Nous avons remplacés ensuite les Pchar(..) par des Pwidechar(...) et cela fonctionne bien l'application Delphi, mais pas avec Labview. la chaine passé par Labview en paramètre et récupéré par la DLL ressemble à du chinois !.

    voici les codes : avec une conversion en Pansichar (cas ou Labview fonctionne , mais pas l'application Delphi)

    prototype de l'entête de la fonction dans LabView.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Int32_t chargeCompoGroupe(CStr chemin)
    prototype de l'entête de la fonction dans la DLL.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     function chargeCompoGroupe(chemin:Pansichar):integer;sdtCall
    Appel de la fonction dans l'application delphi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ... chargeCompoGroupe(Pansichar(Chemin))
    et les codes : avec une conversion en Pwidechar (cas ou Labview ne fonctionne pas , mais l'application Delphi fonctionne)

    prototype de l'entête de la fonction dans LabView.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Int32_t chargeCompoGroupe(CStr chemin)
    prototype de l'entête de la fonction dans la DLL.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     function chargeCompoGroupe(chemin:Pwidechar):integer;sdtCall
    Appel de la fonction dans l'application delphi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ... chargeCompoGroupe(Pwidechar(Chemin))
    Remarque : le paramètre reçue par la DLL est ensuite converti en string pour son utilisation par la DLL, et c'est bien dés que je reçois le paramètre qu'il est incorrect.

    un tuyau ?
    Bye et bon code...

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

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    il manque le type de Chemin (le paramètre)

    une façon simple de savoir ce que tu fais c'est de ne pas laisser le compilateur le faire pour toi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var
      s1: string;
      s2: AnsiString;
      p2: PAnsiChar;
    begin
      s1 := '...': // Chaîne Unicode
      s2 := AnsiString(s1); // conversion Unicode -> Ansi
      p2 := PAnsiChar(s2); // string en PAnsiChar
      chargeCompoGroupe(p2);
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    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
    merci Paul..ça fonctionne.

    en effet j'ai tendance à laisser Delphi à gérer tout cela tout seul.
    Bye et bon code...

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

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

Discussions similaires

  1. Problème parametre fonction DLL VC++
    Par lio33 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 29/06/2007, 14h01
  2. [PowerBuilder] Fonction DLL en dynamique
    Par deltar dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 30/01/2006, 14h25
  3. parametre et fonction
    Par jeff_! dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/12/2005, 09h55
  4. Réponses: 13
    Dernier message: 13/10/2005, 16h03
  5. Appels fonctions DLL
    Par Micka91 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 17/02/2004, 17h32

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