SAVEARRAY -> BSTR



  • Hi,

    wie bekomme ich den Inhalt eines SAVEARRAY in einen BSTR?

    ifstream ifs( FileName, ios::in | ios::binary );
    	ifs.seekg(ios::beg);
    	SAFEARRAY* psa = SafeArrayCreateVector( VT_UI1, 0L, lFileSize);
    	ifs.read( (char*)psa->pvData, lFileSize );
    
    	BSTR bStr = ::SysAllocString((OLECHAR*)psa);
    

    in bStr steht jetzt alles aus psa, allerdings nur bis zur ersten 0 😕

    bin für jede Anregung dankbar.

    grüssle 🙂



  • Du castest binäre Daten zu einen OLECHAR* - das geht halt nur bis zur ersten (scheinbar termierenden) Null. 🙂

    Korrekt konvertieren kann man z.B. mit _variant_t oder std::stringstream.

    Was soll denn eigentlich am Ende in dem BSTR stehen?

    Grüsse

    *this



  • Gast++ schrieb:

    Was soll denn eigentlich am Ende in dem BSTR stehen?

    der Inhalt einer binären Datei

    grüssle 🙂



  • Smitty schrieb:

    Gast++ schrieb:

    Was soll denn eigentlich am Ende in dem BSTR stehen?

    der Inhalt einer binären Datei

    grüssle 🙂

    😃 Zu Zeichen umcodiert oder immer noch binär?

    Grüsse

    *this



  • Gast++ schrieb:

    Smitty schrieb:

    Gast++ schrieb:

    Was soll denn eigentlich am Ende in dem BSTR stehen?

    der Inhalt einer binären Datei

    grüssle 🙂

    😃 Zu Zeichen umcodiert oder immer noch binär?

    Grüsse

    *this

    as it is, also nix konvertieren



  • BSTR bStr = NULL;
        HRESULT hr = ::BstrFromVector(psa,&bStr);
    
    #ifdef DEBUG
    // Zum Gucken
    	_bstr_t b(bStr);
    	int i = b.length();
    #endif
    

    Grüsse

    *this

    P.S.: So so, programmiert doch noch jemand ausser mir mit BSTR&Co. 2001 musste ich mir mal anhören dass OLE/COM mit .NET endgültig tot sei 🙂



  • Schade, auch da nur bis zur ersten 0. Muss ich mir wohl was anderes einfallen lassen. Nur was? Mir gehen langsam aber sicher die Ideen aus 😮

    grüssle 🙂



  • Smitty schrieb:

    Schade, auch da nur bis zur ersten 0. Muss ich mir wohl was anderes einfallen lassen. Nur was? Mir gehen langsam aber sicher die Ideen aus 😮

    grüssle 🙂

    😕

    Also bei mir stehen im _bstr_t von 42 char dann 21 wchar_t drin.
    was irgendwie stimmt.

    Grüsse

    *this



  • ich gehe mittlerweile auch davon aus, dass es mir bei meinem VS2005 irgendwas zerschossen hat. Tlw. recht merkwürdiges Verhalten in der letzten Zeit 😮

    trotzdem ein fettes DANKE

    grüssle 🙂


Anmelden zum Antworten