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

Bibliothèques Discussion :

safearray et integer/int


Sujet :

Bibliothèques

  1. #1
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut safearray et integer/int
    bonjour,

    j'utilise des safearray pour communiquer avec excel. ça marche trés bien avec des double mais avec des int les valeurs sont erronées :

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    	EXPORT_DLL int __stdcall test(SAFEARRAY **sfa) {
     
    		std::ofstream ff("c:\\toto");
     
    		int colonnes, m_lignes;
     
    		// nombre de lignes
     
    		long ubound, lbound, nbElt;
     
    		SafeArrayGetUBound(*sfa,1,&ubound);
     
    		SafeArrayGetLBound(*sfa,1,&lbound);
     
    		m_lignes=ubound-lbound+1;
     
     
     
    		// nombres de colonnes
     
    		if ((*sfa)->cDims>1) {
     
    			SafeArrayGetUBound(*sfa,2,&ubound);
     
    			SafeArrayGetLBound(*sfa,2,&lbound);
     
    			m_colonnes=ubound-lbound+1;
     
    		} else m_colonnes=1;
     
     
     
    		// allocation
     
    		nbElt=colonnes*lignes;
     
     
     
     
     
    		ff << "dim=" << (*sfa)->cDims << std::endl;
     
    		ff << "colonne=" << m_colonnes << std::endl;
     
    		ff << "ligne=" << lignes << std::endl;
     
    		ff << "nbElt=" << colonnes*m_lignes << std::endl;
     
    		ff << "EltSize=" << SafeArrayGetElemsize(*sfa) << std::endl;
     
     
     
    		VARTYPE typ;
     
    		SafeArrayGetVartype(*sfa,&typ);
     
    		ff << "type=" << ((typ==2)?"int":"pas int") << std::endl;
     
     
     
    		// copie
     
    		double *tab=NULL;
     
    		if (SafeArrayAccessData(*sfa, (void **)&tab)!=S_OK || !tab) return -29;
     
    		for(unsigned i=0;i<nbElt;i++){
     
    			ff << tab[i] << "\t";
     
    		}
     
     
     
     
     
    		ff.close();
     
     
     
    		return 0;
     
    	}
    Si je mets double (respectivement Double) à la place de int (respectivement Integer) ça marche parfaitement. A noter que seul les valeurs (tab[i]) sont fausses, le reste est correcte.

    D'où ça peut venir ?

  2. #2
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    en fait c'est tout bête Integer=short

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

Discussions similaires

  1. Comprendre Integer/int
    Par prugne dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 01/03/2012, 10h22
  2. cast Integer / int
    Par zaineb.z dans le forum Langage
    Réponses: 8
    Dernier message: 18/07/2007, 16h28
  3. Type mismatch: cannot convert from Integer to int
    Par littleb dans le forum Eclipse Java
    Réponses: 8
    Dernier message: 16/10/2006, 23h35
  4. Difference Classe Integer et Int
    Par bonjour69 dans le forum Langage
    Réponses: 4
    Dernier message: 06/09/2006, 14h56
  5. Réponses: 9
    Dernier message: 06/07/2005, 15h20

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