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 :

conversion dictionary C++ en C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Par défaut conversion dictionary C++ en C#
    Bonjour,
    Etant débutant en prog, j'ai créer (grâce à certain membres du forum C++) une application en C++ CLI avec visual studio 2005, celle-ci tourne bien sur PC mais je voudrai l'utiliser sur mon pocket PC (Windows mobile 6).
    Pour se faire il me faut coder la même appli en C# .
    Après plusieurs heures passé je n'y arrive toujours pas .

    Il s'agit d'un dictionaire dont voici un extrait du code C++ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    #include <iostream>
    #include <string>
    #include "FourStrings.h"
     
    namespace dico{
     
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    	using namespace System::Collections::Generic;
    	using namespace System::Text;
     
    	public ref class Form1 : public System::Windows::Forms::Form
    	{
    	public:
    		Form1(void)
    		{
    			InitializeComponent();
     
    			dict = gcnew Dictionary< String^, FourStrings^ >;
    			FourStrings ^FourStrs = gcnew FourStrings;
    			FourStrs->first = L"arbre à feuille";
    			FourStrs->second = L"";
    			FourStrs->three = L"";
    			FourStrs->four = L"";
    			dict->Add(L"A12", FourStrs);
     
    		private:
    		Dictionary< String^, FourStrings^ > ^ dict;
     
    #pragma endregion
     
     
    private: System::Void textBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
    			String^ a = textBox1->Text; 
    			FourStrings ^FourStrs;
    			if(dict->TryGetValue(a, FourStrs)&&(FourStrs->three != "")) // si dans  dictionary j'ai la tkey == a 
    			{
    				textBox2->Text = FourStrs->first;// j'affiche la Tvalue first
    				textBox3->Text = FourStrs->second; // j'affiche la Tvalue second
    			}
    			else if (dict->TryGetValue(a, FourStrs))
    			{
    				textBox2->Text = FourStrs->first;// j'affiche la Tvalue first
    				textBox3->Text = FourStrs->second; // j'affiche la Tvalue second
    			}
    			else
    			{
    				textBox2->Text = L" \r\n Abreviation Inconnue ";
    			}
    Et dans un autre fichier d'en-tête.h la classe FourStrings
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    namespace dico {
    	using namespace System;
     
    	public ref class FourStrings {
    	public:
    		String^ first;
    		String^ second;
    		String^ three;
     	        String^ four;
    	};
    }
    Merci de votre aide, bonnes fête à tous

  2. #2
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Commence déjà comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    namespace dico 
    {
     
    	public class FourStrings 
            {
    		string first;
    		string second;
    		string three;
     	        string four;
    	}
    }
    et après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    using System.ComponentModel;
    using System.Windows.Forms;
    //etc...
    namespace dico
    {
    public class Form1 : Form
    {
      public Form1()
      {
     
      }
    }
     
    }
    etc.. etc... tu as plein de codes a dispo partout et la touche F1...

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Par défaut
    Bonsoir et merci pour ton aide,
    j'ai tenté d'apporter les modifs mais ça ne passe pas car le compilo ne veux pas de "gcnew" et j'ai toujours une erreur avec FourString qui semble être mal déclaré.
    voici le fichier modifier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    using System.Text;
    using System.Windows.Forms;
     
    namespace SmartDeviceProject6
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
    			dict =  new Dictionary<string, FourStrings>();
    			FourStrings FourStrs =  new FourStrings();
    			FourStrs = new FourStrings();
    			FourStrs->first = ("arbre à feuille");
    			FourStrs->second = ("");
    			FourStrs->three = ("");
    			FourStrs->four = ("");
    			dict.Add("A12", FourStrs);
     
            }
            private 
     
    		Dictionary<String, FourStrings> dict;
    Erreur:
    Le type ou le nom d'espace de noms 'FourStrings' est introuvable (une directive using ou une référence d'assembly est-elle manquante*?)

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Par défaut
    Bonjour,

    peut-être te serait-il utile de regarder la syntaxe du C# je pense...

    Pour commencer, tout comme en C++, fait attention aux namespace!
    Si tu as copié le code de ppphil, la classe FourStrings est dans le namespace dico.
    Ensuite, il n'y a pas de pointeur en C# (sauf dans du code non managé), ainsi, l'opérateur '->' n'a pas lieu d'être.
    Il faut utiliser un '.' comme avec un objet non pointeur.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Par défaut
    Bonjour Ketan,

    Pas de soucis avec le namespace, il est différent dans mon 2eme post car j'ai recommencé à zéro mon appli ,chose que je fais fréquemment quand je suis perdu !!
    Pour les opérateurs '->' je l'es avais remplacé par un "." mais là c pire j'ai 6 erreurs:
    --->
    FourStrings.first est inaccessible en raison de son niveau de protection
    --->
    Le nom 'dict' n'existe pas dans le contexte actuel
    Pourtant bien déclaré en Public dans FourStrings.cs !!? j'ai modifié dans ClassDiagram.cd et maintenant c'est ok pour les niveau de protection mais pas pour dict qui reste mal déclarer.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Par défaut
    Bonjour,

    Je doute que ce soit la seule erreur, ou alors c'est juste que le champ de classe dict n'est pas déclaré.
    Malheureusement, sans le code je ne peux pas en dire plus.

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

Discussions similaires

  1. Conversion Assembleur Motorola 68xxx en Intel 80xxx
    Par markham dans le forum Autres architectures
    Réponses: 3
    Dernier message: 22/11/2002, 20h09
  2. [MSXML] Comment empécher la conversion des entités ?
    Par nima dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/11/2002, 14h14
  3. Algorithme de conversion de RTF vers HTML
    Par youtch dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/09/2002, 12h35
  4. [Conversions] Millisecondes...
    Par agh dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h25
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

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