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 :

Tableau de string par reference entre L4G & DLL


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 61
    Points : 30
    Points
    30
    Par défaut [Résolu] Tableau de string par reference entre L4G & DLL
    Bonjour,
    je suis en train de coder une DLL en c++ qui sera appelé par un L4G (gupta centura). La méthode qui cause problème doit remplir un tableau de string passé par reference.

    Léger rappel : centura appel la méthode en c++ depuis la DLL, c++ rempli le tableau passé par référence et centura récupère les valeurs.

    • Le cas qui plante


    Voici la déclaration dans centura
    Function: CreateMsgDe
    Description:
    Export Ordinal: 0
    Returns
    Parameters
    String: LPSTR
    String: LPSTR
    String: LPSTR
    String: LPSTR
    String: LPSTR
    Number: INT
    Number: INT
    String: LPSTR
    String: HARRAY
    Et voila l'implémentation en c++

    void CreateMsgDe(LPSTR subj, LPSTR body, LPSTR email, LPSTR Cc, LPSTR filePath, int Importance, int Envoi, LPSTR De, LPSTR * test_c[])
    {
    (*test_c)[0] = "tmp";
    ...
    }
    Et bien sur ca plante royalement quand j'execute (*test_c)[0] = "tmp";

    Si vous pouvez m'aider ca s'errais sympa, car je tourne en rond depuis un bon moment.


    • Au fait j'ai aucun problème si je passe qu'un String et non un tableau de string. Je faisait comme ca :


    Voici la déclaration dans centura
    Function: CreateMsgDe
    Description:
    Export Ordinal: 0
    Returns
    Parameters
    String: LPSTR
    String: LPSTR
    String: LPSTR
    String: LPSTR
    String: LPSTR
    Number: INT
    Number: INT
    String: LPSTR
    String: LPSTR
    Et voila l'implémentation en c++

    void CreateMsgDe(LPSTR subj, LPSTR body, LPSTR email, LPSTR Cc, LPSTR filePath, int Importance, int Envoi, LPSTR De, LPSTR * test_c)
    {
    *test_c = "tmp";
    ...
    }
    D'avance merci.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    En fait il semble bien qu'il faille utiliser l'objet HARRAY depuis centura mais je ne sais pas utiliser l'objet HARRAY depuis c++. Il faut appeler quelle librairie pour utiliser un HARRAY en c++ ?
    Merci encore.

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Tu ne passes nullement un tableau de strings par référence.
    Tu passes par valeur un pointeur vers le premier élément d'un tableau de pointeurs vers des LPSTR.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 578
    Points
    41 578
    Par défaut
    Quelqu'un a le même problème que toi, mais je n'ai rien vu qui ressemble à une vraie solutoin dans le thread : http://forums.microsoft.com/MSDN/Sho...61453&SiteID=1

    En tout cas, HARRAY n'est pas un type Win32 : Quand il est question d'interopérabilité avec les autres langages, Windows utilise des SAFEARRAY * (le type des tableaux de VB)...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    Tu as raison loufoque, excusez mon imprécision. Je me mélange un peu ces temps ci ...

    Merci Médinoc mais j'avais deja trouvé ce post et il ne m'apporte pas trop ...

    J'ai reussi a avoir un debut de reponse avec ce bout de code :

    // Création d'une String Centura d'une longueur lLength
    SWinInitLPHSTRINGParam( &hStr, lLength );
    // Obtention d'un pointeur sur cette String
    lpStrItem = SWinHStringLock( hStr, &lLength );
    // Recopie d'une C String vers ce pointeur
    strcpy( lpStrItem, csTest);
    // Libération du pointeur
    SWinHStringUnlock( hStr );
    // Insertion de la String dans l'index 0 du tableau Centura
    SWinMDArrayPutHString( test_c, hStr, 0 );
    Le probleme maintenant c'est que je ne trouve pas la librairie qui me permet d'utiliser ces methodes !!!

    Un peu d'aide ? ...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    J'ai trouvé !

    Il fallait que j'inclus la dll cdlli31.dll offerte par centura.

    Merci pour vos reponses.

    ++

Discussions similaires

  1. interprétation tableau avec passage par reference
    Par supertotal dans le forum Langage
    Réponses: 1
    Dernier message: 20/06/2013, 11h59
  2. Passage de tableau de pointeur par reference
    Par dahtah dans le forum Débuter
    Réponses: 7
    Dernier message: 25/08/2011, 17h13
  3. [débutant] tableau par reference
    Par max_1988 dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 04/04/2008, 23h18
  4. [String]passage de String par reference?
    Par Snivel dans le forum Langage
    Réponses: 17
    Dernier message: 02/12/2005, 16h24
  5. [String] passage d'objet par référence
    Par adilou1981 dans le forum Langage
    Réponses: 8
    Dernier message: 01/04/2005, 15h22

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