wchar_t * * p einlesen und nach String konvertieren



  • Hi! ^^

    Ich möchte mit einer Funktion in einen wchar_t * * p schreiben. Zumindest ist dieser als anzugebenden Parameter dargestellt. Das ganze greift auf einen CppWebBrowser zu und liest die Werte aus.

    Folgendes habe ich versucht:

    wchar_t * * value;
    pInput->get_value(value); // Hier soll der wchar_t gefüllt werden
    

    An der entsprechenden Programmstelle bekomme ich eine Fehlermeldung, welche mir sagt dass das Problem in der mshtml.dll liegt.

    Schreiben funktioniert:

    WideString test = "hallo!";
    pInput->put_value(test);
    

    Und noch ein Problem. Wie kann ich den zurückgelieferten Wert in einen String konvertieren 😕

    Kompletter Codeabschnitt:

    IHTMLDocument2 *HTMLDoc = NULL;
    if(SUCCEEDED(browser1->Document->QueryInterface(IID_IHTMLDocument2,
      (LPVOID*)&HTMLDoc)))
    {
      IHTMLElementCollection *pAll = NULL;
      if(SUCCEEDED(HTMLDoc->get_all(&pAll)))
      {
    	TVariant name = "tinytext";    //  hier kommt der name des Feldes hin (siehr HTML source)
    	IDispatch *pDisp = NULL;
    	TVariant index=0;
    	if(SUCCEEDED(pAll->item(name, index, &pDisp)))
    	{
    	  if(pDisp)
    	  {
    		IHTMLInputElement *pInput = NULL;     // mshtml.h
    		pDisp->QueryInterface(IID_IHTMLInputElement, (LPVOID*)&pInput);
    		pDisp->Release();
    		if(pInput)
    		{
    			WideString test;
    			pInput->put_value(value);
    		}
    		pInput->Release();
    	  }
    	}
      }
      pAll->Release();
    }
    HTMLDoc->Release();
    

    Danke



  • Hallo

    Aus deinem Quellcode wird nicht klar ob du überhaupt value einen gültigen Speicherbereich zugewiesen hast.

    bis bald
    akari



  • Sry hab ich eben vergessen. Das Problem ist aber ein ganz anderes. So funktioniert es:

    IHTMLDocument2 *HTMLDoc = NULL;
    if(SUCCEEDED(browser1->Document->QueryInterface(IID_IHTMLDocument2,
      (LPVOID*)&HTMLDoc)))
    {
      IHTMLElementCollection *pAll = NULL;
      if(SUCCEEDED(HTMLDoc->get_all(&pAll)))
      {
    	TVariant name = "tinytext";    //  hier kommt der name des Feldes hin (siehr HTML source)
    	IDispatch *pDisp = NULL;
    	TVariant index=0;
    	if(SUCCEEDED(pAll->item(name, index, &pDisp)))
    	{
    	  if(pDisp)
    	  {
    		IHTMLInputElement *pInput = NULL;     // mshtml.h
    		pDisp->QueryInterface(IID_IHTMLInputElement, (LPVOID*)&pInput);
    		pDisp->Release();
    		if(pInput)
    		{
    			BSTR       Value;
    			pInput->get_value(&Value);
    
    			ShowMessage(Value);
    		}
    		pInput->Release();
    	  }
    	}
      }
      pAll->Release();
    }
    HTMLDoc->Release();
    

Anmelden zum Antworten