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 :

Affectation d'une CStringArray dans une CMap


Sujet :

MFC

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 76
    Par défaut Affectation d'une CStringArray dans une CMap
    Bonjour,

    Pour un projet, j'ai besoin d'un conteneur possédant 3 dimensions dont une clé ...
    Mon choix s'est naturellement porté sur une CMap :
    - Clé : Type CString
    - Valeur : CStringArray --> pour y mettre 2 champs texte

    Mon problème arrive quand je tente de remplir la CMap, erreur de conversion de "CStringArray" en "CStringArray".

    C'est a cause du manque de l'opérateur d'affectation et de copie de la CMap ou de la CStringArray.

    J'ai bien lu la Faq : http://cpp.developpez.com/faq/vc/?pa...tions#CMapCopy

    J'ai essayé cette solution mais toujours le même problème ... le SetAt ne fonctionne pas.

    Exemple qui ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CStringArray saElement;
    	saElement.RemoveAll();
     
    	CMap<CString, const char *, CStringArray, const CStringArray*> maMap;
    	maMap.RemoveAll();
     
    	saElement.Add("Value 1");
    	saElement.Add("Value 2");
     
    	maMap.SetAt("Key 1", &saElement);
    Comment puis je faire ?

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    typedef CArrayEx<CString ,const TCHAR *> StringArray; // Like CStringArray !!
        StringArray saElement;
        saElement.RemoveAll();
     
        CMap<CString, const TCHAR *, StringArray, StringArray &> maMap;
        maMap.RemoveAll();
     
        saElement.Add(_T("Value 1"));
        saElement.Add(_T("Value 2"));
     
        maMap.SetAt(_T("Key 1"), saElement);
    CArrayEx vient de la faq:http://cpp.developpez.com/faq/vc/?pa...CArrayOfCArray

  3. #3
    Membre actif
    Inscrit en
    Mars 2002
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 68
    Par défaut
    Comment doit t'on implementer le code fourni dans le lien vers la FAQ ???

    il faut creer un fichier "ArrayEx.h" ????

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    tu mets le code du template dans un .h, ArrayEx.h si tu veux.

  5. #5
    Membre actif
    Inscrit en
    Mars 2002
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 68
    Par défaut
    Message D'erreur :
    FILTREDlg.cpp
    c:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxtempl.h(163) : error C2440: 'type cast' : cannot convert from 'CString' to 'DWORD_PTR'
    No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
    c:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxtempl.h(1542) : see reference to function template instantiation 'UINT HashKey<ARG_KEY>(ARG_KEY)' being compiled
    with
    [
    ARG_KEY=CString
    ]
    c:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxtempl.h(1541) : while compiling class template member function 'CMap<KEY,ARG_KEY,VALUE,ARG_VALUE>::CAssoc *CMap<KEY,ARG_KEY,VALUE,ARG_VALUE>::GetAssocAt(ARG_KEY,UINT &,UINT &) const'
    with
    [
    KEY=CString,
    ARG_KEY=CString,
    VALUE=StringArray,
    ARG_VALUE=StringArray &
    ]
    c:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxtempl.h(1594) : while compiling class template member function 'StringArray &CMap<KEY,ARG_KEY,VALUE,ARG_VALUE>::operator [](ARG_KEY)'
    with
    [
    KEY=CString,
    ARG_KEY=CString,
    VALUE=StringArray,
    ARG_VALUE=StringArray &
    ]
    c:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxtempl.h(1406) : while compiling class template member function 'CMap<KEY,ARG_KEY,VALUE,ARG_VALUE>::CMap(INT_PTR)'
    with
    [
    KEY=CString,
    ARG_KEY=CString,
    VALUE=StringArray,
    ARG_VALUE=StringArray &
    ]
    .\FILTREDlg.cpp(177) : see reference to class template instantiation 'CMap<KEY,ARG_KEY,VALUE,ARG_VALUE>' being compiled
    with
    [
    KEY=CString,
    ARG_KEY=CString,
    VALUE=StringArray,
    ARG_VALUE=StringArray &
    ]
    Build log was saved at "file://c:\Documents and Settings\SNAKE\Mes documents\Visual Studio 2008\Projects\FILTRE\FILTRE\Release\BuildLog.htm"
    FILTRE - 1 error(s), 0 warning(s)
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    J'ai bien rajouté #include "ArrayEx.h" et creer le fichier CArrayEx.h pour mon fichier DIALOG BASED FiltreDlg.cpp dont voici le code source posant probleme :

    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
    	typedef CArrayEx<CString,CString> StringArray;
    	StringArray ListeInfo;
    	ListeInfo.RemoveAll();
     
    	CMap<CString, CString, StringArray, StringArray &> BD;
    	BD.RemoveAll();
     
    	CString BUF;
    	Siret.GetWindowTextA(BUF);
    	ListeInfo.Add(BUF); // position 0
     
    	Rs.GetWindowTextA(BUF);
    	ListeInfo.Add(BUF); // position 1
     
    	Adresse.GetWindowTextA(BUF);
    	ListeInfo.Add(BUF); // position 2
     
    	CP.GetWindowTextA(BUF);
    	ListeInfo.Add(BUF); // position 3
     
    	Ville.GetWindowTextA(BUF);
    	ListeInfo.Add(BUF); // position 4
     
    	Commentaire.GetWindowTextA(BUF);
    	ListeInfo.Add(BUF); // position 5
     
    	CTelContact.GetWindowTextA(BUF);
    	ListeInfo.Add(BUF); // position 6
     
    	//DDX_Control(pDX, IDC_TELCONTACT, CTelContact);
    	//DDX_Control(pDX, IDC_SIRET, Siret);
    	//DDX_Control(pDX, IDC_RS, Rs);
    	//DDX_Control(pDX, IDC_ADRESSE, Adresse);
    	//DDX_Control(pDX, IDC_CP, CP);
    	//DDX_Control(pDX, IDC_VILLE, Ville);
    	//DDX_Control(pDX, IDC_COM, Commentaire);
    	//DDX_Control(pDX, IDC_TEL, CTelIdentification);
     
    	BD.SetAt(BUF,ListeInfo);
    doit-on aussi modifier le fichier "afxtempl.h" ?? je pense pas mais je crois que j'ai oublié un detail !!

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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