VARIANT-Array mit BSTR Werten füllen, klappt nicht



  • Hallo,

    ich habe folgendes Problem.

    Ich muss in meiner Anwendung beim Aufruf einer Funktion als Parameter ein VARIANT Array mit BSTR Werten übergeben, jedoch klappt das Befüllen des VARIANTS nicht so richtig.

    Folgenden Code habe ich hierzu:

    // bounds && create 
    SAFEARRAYBOUND rgb [] = { 1, 0 };
    SAFEARRAY *pSA = SafeArrayCreate(VT_BSTR, 1, rgb); 
    
    // fill && put 
    BSTR tstBSTR = (objRole.GetObjectID()).AllocSysString();
    LONG rgIndices = 0; 
    SafeArrayPutElement(pSA, &rgIndices, &tstBSTR); 
    
    // Initialize and fill VARIANT
    VARIANT vsa; 
    V_VT(&vsa)  = VT_BSTR | VT_ARRAY; 
    V_ARRAY(&vsa) = pSA;
    

    Nachdem ich keine richtigen Ergebnisse erhielt, wollte ich schauen, was eigentlich in dem Array steht, also habe ich nochmal diesen Code dazu erstellt:

    SAFEARRAY *test1 = vsa.parray;
    SafeArrayGetElement(test1, &ix, &vVal); //ix ist 0
    BSTR test2 = vVal.bstrVal;
    CString test4 = test2;
    

    Ich musste dann feststellen, dass dort nur Unsinn drinsteht, weiss einer, warum das der Fall ist, was mache ich denn falsch beim Befüllen des VARIANTs?

    Gruss,

    chullain



  • weiss keiner, was da das Problem sein könnte, bin schon am Verzweifeln... 😡


Anmelden zum Antworten