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 :

problème de type dans une union [c#]


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 102
    Par défaut problème de type dans une union [c#]
    Bonjour à tous,

    j'ai voulu utiliser une structure sous la forme d'une union, mais il ne semble pas possible d'y mettre des objets (tels que string par exemple)

    or je dois y faire figurer une chaine de caractères, mais je n'arrive pas à utiliser de char[5] (par exemple), pour remplacer l'utilisation de string!

    quelqu'un sait comment il est possible de mettre un type string dans une struct où l'offset mémoire est géré pour fonctionner comme une union?

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Ca existe les union en C# ?

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 102
    Par défaut
    En utilisant une structure et en gérant l'offset mémoire, on créer une union...

    il faut inclure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using System.Runtime.InteropServices;
    et l'union se déclare comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [StructLayout(LayoutKind.Explicit)]
    public struct Var_IorF
    {    
        [FieldOffset(0)] public int i;
        [FieldOffset(0)] public float f;
    }

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst=5)]
    public string str;

    pour une chaîne de 5 caractères ...

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 102
    Par défaut
    ça ne passe pas non plus... ça plante dés le chargement et sur VS en mode débogage, il me signale qu'avec un objet, sa taille mémoire n'étant pas prévisible, il doit se chevaucher.

    je pense que je vais passer outre l'union, mais bon ce sera moins propre..

    merci quand même..

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Un type valeur et un type référence ne peuvent pas se chevaucher en code managé.
    Il faut donc créer deux structures, une en LayoutKind.Explicit (avec les types valeurs) et l'autre en LayoutKind.Sequential (avec le type référence).

    ms-help://MS.NETFramework.v20.fr/dv_fxinterop/html/0068fbf2-3ab4-4f43-abd8-4d34ae17bd7c.htm

  7. #7
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Citation Envoyé par maxdwarf Voir le message
    je pense que je vais passer outre l'union, mais bon ce sera moins propre..
    Ca depend ce qu'on appelle propreté.
    Je croyais que ce genre de chose avait pas de sens depuis que les ordinateurs ont plus de 64k de memoire vive.

    Que fais-tu comme programme pour avoir besoin d'une telle chose? Et surtout pourquoi le fais-tu en .Net?

Discussions similaires

  1. Probléme de jointure dans une requete avec UNION
    Par MissOleana dans le forum Requêtes
    Réponses: 1
    Dernier message: 28/11/2013, 15h45
  2. Probléme de rand dans une requete union
    Par m4riachi dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/05/2011, 16h16
  3. Réponses: 4
    Dernier message: 28/04/2008, 17h50
  4. Réponses: 3
    Dernier message: 23/05/2006, 15h09
  5. Problème de Type dans une table liée
    Par tangueros78 dans le forum Access
    Réponses: 19
    Dernier message: 16/03/2006, 09h14

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