SafeArray.PutElement geht nicht warum?



  • Wieso geht das nicht?

    void CACRSQLSet::FillSafeArray(OLECHAR FAR* sz, long iRow, long iCol,COleSafeArray* sa)
    {
    	//füllen des Safearrays
    	long index[2];
    
    	for(iRow=0;iRow<=m_iNumRows-1;iRow++)
    	{
    		for(iCol=0;iCol<=m_iNumCols-1;iCol++)
    		{
    			index[0] = iRow;
    			index[1] = iCol;
    			if(m_bFillWithStrings) // mit Text
    			{
    				sa.PutElement(index, &m_sInsertValue);
    			}
    			else //Mit Zahlenwerten
    			{
    				sa.PutElement(index, &m_nInsertValue);
    			}
    		}
    	}
    }
    

    ich bekomm da immer die Fehler:

    error C2228: left of '.PutElement' must have class/struct/union type

    aber wieso? mein Safearray ist doch uniontype oder nicht?



  • ...,COleSafeArray* sa)
    

    =>

    sa->PutElement(...);
    

    😉



  • oh man einer meiner Lieblingsfehler die ich nie finde! Vielen Dank, so gehts! 😃



  • zu voreilig, jetzt lässt es sich zwar kompilieren, aber ich bekomm jetzt immer den Fehler nicht genügend Speicher! Was ist denn nu schon wieder falsch ich bekomm den Fehler in der PutElement.
    Danke again



  • OK so gehts!

    void CACRSQLSet::FillSafeArray(long iRow, long iCol,COleSafeArray* sa)
    {
    	//füllen des Safearrays
    	long index[2];
    
    	for(iRow=0;iRow<=m_iNumRows-1;iRow++)
    	{
    		for(iCol=0;iCol<=m_iNumCols-1;iCol++)
    		{
    			index[0] = iRow;
    			index[1] = iCol;
    			if(m_bFillWithStrings) // mit Text
    			{
    			   VARIANT v;
                   CString s;
                   VariantInit(&v);
                   v.vt = VT_BSTR;
                   v.bstrVal = m_sInsertValue.AllocSysString();
                   sa->PutElement(index, v.bstrVal);
                   SysFreeString(v.bstrVal);
                   VariantClear(&v);
    			}
    			else //Mit Zahlenwerten
    			{
    				sa->PutElement(index, &m_nInsertValue);
    			}
    		}
    	}
    }
    

Anmelden zum Antworten