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

Windows Forms Discussion :

[Marshalling] 2.0


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 166
    Par défaut [Marshalling] 2.0
    Bonjour j'ai un probleme que je n'arive pas a resoudre j'ai une structure en c++ qui a cette representation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef struct _FBEConnect
    {
    	long Valeur2;
    	char **Basename;
    } FBEConnect;
    Pour l'instant j'ai cela en c# mais ca ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     [StructLayout(LayoutKind.Sequential, Pack=1)]
        public struct FBEConnect
        {
            [MarshalAs(UnmanagedType.I4)]
            public Int32 Valeur2;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 11, ArraySubType = UnmanagedType.LPTStr)]
            public string[] Basename;
        }
    Si quelqu'un aurait une idée surtout pour convertir un char ** en c#

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 166
    Par défaut
    Alors bon j'ai trouver une solution :

    un char ** peut etre convertit en string[] mais le probleme est qu'il faut convertir ce string[] en intptr pour cela voici une petite fonctions qui evite de passer par le mode unsafe;



    IntPtr ConvertStringTab(string[] tab)
    {
    IntPtr ptr = Marshal.AllocHGlobal(tab.Length * IntPtr.Size);
    for( int i = 0; i < tab.Length; i++ )
    {
    Marshal.WriteIntPtr(ptr, i * IntPtr.Size, Marshal.StringToHGlobalAnsi(tab[i]));
    }
    return ptr;
    }

  3. #3
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut
    Très intéressant.
    J'ai eu le même problème il y a 6 mois et ma solution était similaire à la tienne.

    Beau travail

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

Discussions similaires

  1. [Remoting] Quel est le lien entre marshalling/serialisation?
    Par mehdi82 dans le forum Framework .NET
    Réponses: 7
    Dernier message: 13/12/2007, 15h37
  2. [Web Services] Spring WS et Marshaller
    Par iMacXus dans le forum Spring
    Réponses: 1
    Dernier message: 21/03/2007, 17h41
  3. [JAXB 2.0] Validation et marshalling
    Par Ricky81 dans le forum Persistance des données
    Réponses: 2
    Dernier message: 03/11/2006, 16h24
  4. [C#] Dll C++ et marshaling de VARIANT
    Par monk31 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/02/2005, 13h32
  5. erreur IDL:omg.org/CORBA/MARSHAL:1.0
    Par Pinggui dans le forum CORBA
    Réponses: 3
    Dernier message: 13/05/2002, 15h05

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