Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Visual C++ SafeArrayPutElements

    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?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465

    Re: Visual C++ SafeArrayPutElements

    Originariamente inviato da Lomba1986
    se potete aiutarmi...se non potete ditemelo subito che non sto ad aspettare invano le risposte...
    Bizzarra questa richiesta ... se ti dico che non ti so aiutare, la mia risposta vale per tutti? O attendi tutte le risposte da tutti?

    o un Array da riempire solamente che non viene riempito e non capisco dove sbaglio...
    Detta così, non aiuta molto chi ti vorrebbe aiutare.

    Di che array si tratta? Come lo riempi? Come ti accorgi che qualcosa non va?

    Se non dai maggiori spiegazioni, dubito che avrai suggerimenti qui e in altri forum ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ho dimenticato di postare l'ultima riga di codice...

    per rispondere alle tue domande:

    _ mi accorgo che non è riempito perchè stampando gli elemtni dell'array non hanno i valori che ho "pensato" di assegnarli (ultimo elese del codice)

    _ L'array come si legge dal codice postato è un SafeArray monodimensionale di VT_R4 elementi
    _ lo riempio tramite il ciclo for e tramite la funzione SafeArrayPutElement

    Spero che adesso sia un po' più chiaro...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Penso che il problema sia in

    codice:
    hr = SafeArrayPutElement(psa, index, &v3.fltVal);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Perfetto grazie :-)

    Segnalo anche a chi volesse, per cultura
    che si può passare direttamente il valore, senza usare la variabile di tipo VARIANT

    riprendendo dal codice
    posso chiamare così la funzione:

    codice:
    hr = SafeArrayPutElement(psa,index,&valf);
    Ciao a tutti e grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.