Ciao a tutti ho una domanda di Visual C++
se potete aiutarmi...se non potete ditemelo subito che non sto ad aspettare invano le risposte...

o un Array da riempire solamente che non viene riempito e non capisco dove sbaglio...

codice:
HRESULT hr = -1;
CComVariant t;
int val=-1;
float valf=-1;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = 3;//numero elementi dell'array
SAFEARRAY *psa = SafeArrayCreate(VT_R4, 1, rgsabound);//vettore monodimensionale
long index[1];
char *valore = strtok(valC,"_");
if(cmd<3) 
{
   for(int i=0;i<3;i++) 
   {
       index[0]=i;
       valf = atof(valore);
       CComVariant v3(valf); 			
       hr = SafeArrayPutElement(psa,index,&v3); 
       if (FAILED(hr))
           printf("inserimento fallito\n"); 		
       valore = strtok(NULL,"_"); 			
       v3.Clear(); 			
       long *pData = NULL; 
       HRESULT hr = SafeArrayAccessData (psa, (void **) & pData);  			    
       if(FAILED(hr))
    	   printf("accesso fallito\n"); 		
       else 			
       { 				
            long Low (0), High (0); 	
            SafeArrayGetLBound (psa, 1, & Low);
            SafeArrayGetUBound (psa, 1, & High); 				
            long Size = High-Low +1; 			
       } 		
}
Non riesco a capire dove sbaglio...ho preso gli spunti da vari tutorial...ma non capisco...mi sapete dare una mano?