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 :

StructLayout : structure avec tableau


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 90
    Points : 71
    Points
    71
    Par défaut StructLayout : structure avec tableau
    J'ai besoin de "convertir" une structure c en une version csharp car j'appelle une fonction d'une dll dans un programme csharp.
    Je ne suis pas très familier avec StructLayout.

    Comment traduire cette structure:

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    struct MYSTRUCT
    {
                ulong   value;
                char    nTab1;
                long    tab1[8];
                char    nTab2;
                char    tab2[16];
    }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Essaie comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public struct MYSTRUCT
    {
                uint   value;
                byte    nTab1;
                [MarshalAs(UnmanagedType.ByValArray, SizeConst=8)]
                int[] tab1;
                byte    nTab2;
                [MarshalAs(UnmanagedType.ByValArray, SizeConst=16)]
                byte[] tab2;
    }

  3. #3
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [StructLayout(LayoutKind.Sequential)]
    public struct MYSTRUCT
    {
    après c'est plus classe.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 90
    Points : 71
    Points
    71
    Par défaut
    Génial!
    J'avais oublié de dire que les éléments devaient être 'byte aligned' mais j'ai trouvé comment faire, il suffit d'ajouter
    [StructLayout(LayoutKind.Sequential, Pack = 1)]

    Encore merci!

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

Discussions similaires

  1. Comparaison de structures avec tableau ?
    Par Nikolas dans le forum C++
    Réponses: 26
    Dernier message: 01/11/2010, 17h06
  2. petite base de donnée avec structure ou tableau?
    Par progbase dans le forum Débuter
    Réponses: 5
    Dernier message: 07/04/2008, 15h03
  3. structure avec tableau multidimentionnel
    Par Alternative451 dans le forum Débuter
    Réponses: 2
    Dernier message: 29/03/2008, 22h41
  4. Allocation d'une structure avec tableau
    Par line86 dans le forum C
    Réponses: 5
    Dernier message: 02/10/2007, 11h38
  5. Réponses: 2
    Dernier message: 12/05/2007, 01h57

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