VARIANT Datentyp????



  • Naja im Prinzip wird an den Eventhandler OnError die 2 Variants übergeben die den errorcode und die description enthalten. Wie ich mit den Daten nun weiter verfahren muss um die wichtigen informationen auszulesen weis ich leider nicht und dummerweise auch nicht wie die generiert werden. hab einfach nur auf dem Dialogfeld rechtsklick auf das OCX gemacht und dan eben Eventhandler hinzufügen...:

    void CWrenchServerDlg::OnErrorSocketwrench4(const VARIANT& ErrorCode, const VARIANT& Description)
    {
    	CComVariant Err_Code = ErrorCode;
    	CComVariant Err_Descr = Description;
    	CComBSTR* teststring;
    
    	BstrFromVector(teststring, ErrorCode);
    
    	MessageBox(_T("hier die description"),_T("hier der errorcode"),MB_OK);
    
    }
    


  • Wenn du nichts weiter willst, als ErrorCode und Description in einer MessageBox anzuzeigen, musst du den vt Member überprüfen - er sagt dir, welchen Datentyp der Variant beinhaltet (siehe auch: http://msdn2.microsoft.com/en-us/library/ms221627.aspx)

    Angenommen ErrorCode ist vom Typ int, dann könnte das ganze so aussehen:

    CComVariant Err_Code = ErrorCode;
    CComVariant Err_Descr = Description;
    CComBSTR* teststring;
    CString strDescription, strErrorCode;
    
    BstrFromVector(teststring, ErrorCode);
    
    if(Description.vt == VT_BSTR)
    {
       strDescription.Format(_T("%S"), Description.bstrVal);		
    }
    
    if(ErrorCode.vt == VT_INT)
    {
        strErrorCode.Format(_T("%i"), ErrorCode.intVal);
    }
    
    MessageBox(strDescription, strErrorCode, MB_OK);
    

  • Mod

    Einfacher ist ein VariantChangeType (wie ich es scon schrieb) und dann direkt von dem entsprechenden Typ VT_BSTR auszugehen...


Anmelden zum Antworten