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 :

VARIANT C++


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 7
    Par d�faut VARIANT C++
    Bonjour
    J4utilise C++ dans une dll avec une interface COM pour que mes fonctions et mes objets soient appelables depuis VBA.
    J'ai une fonction qui doit renvoyer une matrice. Je dois donc transformer cette matrice de double en variant avant de la renvoyer � VB.
    Est-ce que qqun a une id�e sur comment faire??
    Merci

  2. #2
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    35
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 35
    Par d�faut
    il faut faire une boucle!!!

    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
     
    void (double ** matrice,VARIANT**matrice_variant,int largeur_matrice,int longueur_matrice)
    {
     
    int a = 0;
    int b = 0;
    for( a=0;a<longueur_matrice;a++)
    {
      for( b=0;b<largeur_matrice;b++)
      {
          matrice_variant[a][b].vt = VT_R8;
          matrice_variant[a][b].dblVal =   matrice[a][b].
      }
    }
     
    }

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 7
    Par d�faut
    merci..
    Mais est ce qu'il n'y a pas de phase d'initialisation??
    Si je n'avais pas re�u matrice_variant en argument de la fonction, comment aurais-je d� le cr�er � l'int�rieur de celle-ci?
    merci encore

  4. #4
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    VARIANT n'est pas un type C++ standard. Tu utilises quel compilo / biblioth�que ?
    Il faut utiliser un SAFEARRAY.
    http://rp.developpez.com/vb/tutoriels/dll/
    http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q207931
    http://www.codeguru.com/Cpp/COM-Tech/activex/com/article.php/c2575/

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 7
    Par d�faut
    J'utilise Visual C++

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    35
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 35
    Par d�faut
    il faut allouer de la m�moire � to matrice de variant...

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 7
    Par d�faut
    oui, mais est-ce qu'il y a moyen d'allouer de la m�moire � une matrice de variant sans passer par les safearray et toute la syntaxe compliqu�e qui va avec..
    Qualles sont les commandes minimales pour faire cette initialisation?
    merci

  8. #8
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    VB attend un SAFEARRAY...
    Ton programme VB poss�de son propre espace d'adressage. Tout ce que tu alloues est propre � ton process, le prog VB ne peut pas y acc�der. COM et SAFEARRAY s'occupent de partager les donn�es. Tu peux utiliser une classe qui encapsule le SAFEARRAY, mais il te faut utiliser un SAFEARRAY...
    L'exemple sur codeguru initialise un SAFEARRAY de float � 2 dimensions.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 7
    Par d�faut
    J'ai fait en cr�ant des safearray,
    ce code compile mais ne marche pas..
    De l'aide ????

    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
    STDMETHODIMP CIFCPricerCOM::Getvariant(VARIANT *hauteur)
    {
    	int i,j;
    	SAFEARRAYBOUND rgsabound[10];
    	for (i=0; i< 10; i++){
    		rgsabound[i].lLbound = 0;
    		rgsabound[i].cElements = 9;
    	}
    	VariantInit(hauteur);
     
        hauteur->vt = VT_VARIANT | VT_ARRAY;
        hauteur->parray = SafeArrayCreate(VT_VARIANT,10,rgsabound);
        long position[2];
    	for (i=0; i< 10; i++){
    		for (j=0; j< 10; j++){
    			position[0] = i;
    			position[1] = j;
    			CComVariant variant1(15);
    			SafeArrayPutElement(hauteur->parray,position,&variant1);
    		}
    	}
     
     
    	return S_OK;
     
    }

  10. #10
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut


    L� tu cr�es un tableau � 10 dimensions:
    10 * 10 * 10 * 10 * 10 * 10 * 10 * 10 * 10 * 10.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 7
    Par d�faut
    oui, je cr�e ce tableau, et j'y mets des 15 partout.
    Je m'attends � avoir en sortie une matrice 10*10 avec des 15 �rtout
    mais je n'ai rien en sortie..
    Quand je me mets en debug et que je mets un spy sur mon safearray, plusieurs de ses champs ne sont pas �valu�s..
    Une id�e?

  12. #12
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Je m'attends � avoir en sortie une matrice 10*10
    Non... une matrice, c'est 2 dimensions. Tu en cr�es 10, soit une matrice de matrices de matrices de matrices de matrices...

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 7
    Par d�faut
    Thanks a lot..
    J'y arrive finalement

Discussions similaires

  1. Variante de TUpDown avec incr�ment r�el
    Par Bernard Grosdoy dans le forum Composants VCL
    R�ponses: 6
    Dernier message: 20/10/2004, 16h40
  2. Transtypage d'un variant.
    Par Lodonez vincent dans le forum Langage
    R�ponses: 4
    Dernier message: 02/09/2004, 19h42
  3. Champ Date � '01/01/0001' -> Pb conversion de variant !!!
    Par AnnSo dans le forum Bases de donn�es
    R�ponses: 6
    Dernier message: 04/06/2004, 16h54
  4. conversion : VARIANT FAR* URL vers CString
    Par kam dans le forum MFC
    R�ponses: 2
    Dernier message: 29/03/2004, 13h32
  5. Convertion de type VARIANT � type CString
    Par j_grue dans le forum MFC
    R�ponses: 2
    Dernier message: 07/11/2002, 14h18

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