BSTR zu String



  • Hi,

    ich suche schon den halben Tag nach einer Möglichkeit, einen BSTR in einen normalen C++ String zu konvertieren (von mir aus auch über Umwege, nur das Resultat ist wichtig). Jedoch habe ich nur Möglichkeiten gefunden, die Header verwenden, die ich nicht habe.

    Kennt jemand eine funktionierende Methode, um diesen Cast zu bewerkstelligen?

    Riesen Dank!
    Neo



  • Also die Funktion VarI1FromStr kannst du nicht benutzen?

    Kannst du dann die MFC Klasse CString verwenden?

    http://www.codeproject.com/string/bstrsproject1.asp



  • Nein, ich habe anscheined keine MFC. Hängt mit DevCPP zusammen oder so.



  • BSTR hat nichts mit MFC sondern allenfalls mit WINAPI zu tun. BSTR ist unter
    anderem ein Zeiger auf w_char. Am einfachsten funktionierts mit den
    Konvertierungsmakros von ATL, z.B. T2A. Ansonsten musst du dich wohl selbst
    mit Funktionen wie WideCharToMultiByte() herumschlagen.



  • Man muss sich allerdings sehr genau anschauen, wie es mit Ownership ausschaut. BSTRs sind nicht einfach herrenlose Puffer aus 16bit-Worten, sondern sie müssen mit SysAllocString & co alloziert werden und mit SysFreeString freigegeben werden. Wer davon was übernimmt, muss man sich bei der jeweiligen Schnittstelle detailliert durchdenken. Für COM-Schnittstellen gibt's da festgeschriebene Regeln (die sind aber leicht zu lernen und zu befolgen, weil sie mehr oder weniger dem Hausverstand entsprechen).



  • Ich habe inzwischen die Parameterübergabe von BSTR auf ein Byte Array umgestellt, und so funktioniert es zumindest, wenn auch etwa unsauberer..


Anmelden zum Antworten