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

MFC Discussion :

convertir un type non managé en type managé.


Sujet :

MFC

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Points : 59
    Points
    59
    Par défaut convertir un type non managé en type managé.
    bonjour tout le monde.

    comme l'indique le sujet de mon message, je cherche a convertir un type non managé en type managé.

    Pour le besoin de mon application, je dois stocker le retour de "inet-ntoa" qui est un char * en System::Object__gc * qui est le texte placé dans une comboBox (items --> maComboBox->Items->Add(System::Object__gc *)).

    Cependant, comme la convertion ne se fait automatiquement je cherche un moyen de la faire manuellement. Mais je n'y arrive pas!

    C'est pourquoi je fais appel a vous.

    merci d'avance.
    Visual Studio .net 2003

  2. #2
    Membre éclairé Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Points : 693
    Points
    693
    Par défaut
    Il faudrait savoir comment est géré System::Object__gc, ce qu'il permet de faire...

    N'y a t'il pas la possibilté de faire:
    System::Object__gc * object = new System::Object__gc(le_char_etoile);
    ?

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Points : 59
    Points
    59
    Par défaut
    je viens de tester ton code, mais la j'ai un petit problème de compréhension!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     System::Object __gc * object = new System::Object __gc(inet_ntoa(**adr));
    voila l'erreur généré:
    '__gc' ne peut s'appliquer qu'à une classe, un struct, une interface, un tableau ou un pointeur

    donc la dite moi si je me trompe : un char * est bien un pointeur sur un caractère!!!!!
    si oui, c'est bien ce que je lui domme comme argument mais ca ne veut pas!!!

    car quand je donne directement inet_ntoa(**adr) a ma fonction le message suivant apparait : impossible de convertir le paramètre 1 de 'char *' en 'System::Object __gc *'

    J'aurais une autre question pour info perso, comme j'ai récupéré une fonction sur internet, je ne saisi pas tout ce qu'il y a dedans. En particulier le double * devant adr. adr est déclaré comme ca : struct in_addr **adr;

    merci d'avance.
    Visual Studio .net 2003

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je crois que pour ce que tu veux faire, il faut chercher du coté de l'opérateur __box
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Points : 59
    Points
    59
    Par défaut
    je suis allé voir du coté de __box mais je n'arrive pas a faire grand chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    System::Object __gc * obj = __box(inet_ntoa(**adr));
    Form1::comboBox_IP->Items->Add(obj);
    je dois surment fair un truc qu'il ne faut pas, mais je ne vois pas quoi!!!

    avec ce code j'ai deux erreur généré sur la 1ere ligne :
    error C2440: 'initialisation' : impossible de convertir de 'char *' en 'System::Object __gc *'

    error C3627: Seul un type valeur peut être converti
    Visual Studio .net 2003

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    pourquoi tu ne passes pas par un objet String ?
    tu crées l'objet String à partir de ton char * et tu l'ajoutes à ta combo

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Points : 59
    Points
    59
    Par défaut
    en effet, c'est bien plus simple et en plus ca marche !!!

    merci beaucoup.
    Visual Studio .net 2003

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

Discussions similaires

  1. As400Text et As400PackedDecimal type non reconnu comme type valide
    Par okilele dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 19/11/2013, 06h25
  2. Réponses: 2
    Dernier message: 09/03/2010, 17h13
  3. Réponses: 0
    Dernier message: 06/03/2009, 15h44
  4. convertir un type non managé en type managé.
    Par poporiding dans le forum C++
    Réponses: 3
    Dernier message: 22/05/2006, 09h44
  5. opérateur non applicable à ce type d'opérande
    Par Amon dans le forum Langage
    Réponses: 3
    Dernier message: 11/06/2003, 18h07

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