Variant in char* umwandeln



  • Wie kann ich einen Variant in char* umwandeln?



  • VariantChangeType(Ex)
    COleVariant::ChangeType


  • Mod

    Und wenn Du einen BSTR hast (denn einen char* findest Du im Variant nicht), dann kannst du CW2A verwenden.



  • Wie komme ich nun vom BSTR zum char*?
    Was muß ich für CW2A einbinden?
    Ich habe im Web gesucht: Wo ist W2T definiert? Wenn ich die Klammer aufmache scheint das VS die Funktion zu kennen. Wenn ich versuche die Definition herauszufinden scheitert er. Was muß ich noch includieren?


  • Mod

    CW2A gehört zu den ATL Klassen ab VS200x!
    (atlconv.h) Ansonsten W2A verwenden.



  • Jatzt knallt mir der Compiler lauter Fehlermeldungen aus der atlconv.h auf die Ausgabe:

    c:\\program files\\microsoft visual studio\\vc98\\atl\\include\\atlconv.h(46) : error C2146: syntax error : missing \';\' before identifier \'WINAPI\'
    c:\\program files\\microsoft visual studio\\vc98\\atl\\include\\atlconv.h(46) : error C2433: \'LPWSTR\' : \'inline\' not permitted on data declarations

    Liegt das daran das ich das VS6 benutze?
    Das Makro W2T() scheint genau das zu sein das ich suche. Wie komme ich an dieses?



  • Ich bin neu in diesem Bereich also bitte nicht gleich die Hände über dem Kopf zusammenschlagen 😉

    Meine Frage wird sich annähernd gleich zur der meines Vorgängers anhören,
    vllt. dennoch ein Versuch ? 😉
    Wie kann ich den Parameter VARIANT* URL in einen String (z.B. char*) konvertieren, so dass ich diesen mit einem beliebigen 2. String vergleichen kann.
    Was ist dazu im einzelnen einzubinden ?

    Bsp.:

    STDMETHODIMP CObjVw::DocumentComplete(IDispatch* pDisp, VARIANT* URL)
    {
      //Konvertierung von VARIANT* URL zu "String of some kind"
      //Vergleich von url string mit beliebigem 2. String
    }
    

    Für Hilfe und Codebeispiele wäre ich sehr dankbar.


Anmelden zum Antworten