CComPtr<IWebBrowser2> spWB;
CComPtr<IDispatch> spDisp;
OleInitialize(NULL);
CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
IID_IWebBrowser2, (void**)&spWB);
if (!spWB) return;
VARIANT vEmpty;
BSTR bstrURL = WideString("http://" + Edit1->Text).c_bstr();
HRESULT hr = spWB->Navigate(bstrURL, &vEmpty, &vEmpty, &vEmpty, &vEmpty);
TMemo::Lines::Clear глючит?
Код:
затем (в теле этой же ф-ции) пробегаюсь по его элементам и вывожу ссылки в TMemo.
Если где нибудь в теле этой ф-ции прописать
Memo1->Lines->Clear();
то документ просто не загружается HRESULT hr = spWB->Navigate() в hr приходит код ошибки (0x80020008)
В чем дело?
А после Clear Add() не надо?
Цитата: oxotnik333
...
Если где нибудь в теле этой ф-ции прописать
...
В чем дело?
Действительно для TMemo обычно вызывается "его" Clear(), а не св-ва Lines.
ЗЫ: "где-нибудь" тоже круто, ты уж приводи полный код:)
Цитата: Ухух
А после Clear Add() не надо?
А нахрена?
Цитата: GIZMO
Действительно для TMemo обычно вызывается "его" Clear(), а не св-ва Lines.
ЗЫ: "где-нибудь" тоже круто, ты уж приводи полный код:)
ЗЫ: "где-нибудь" тоже круто, ты уж приводи полный код:)
Всегда чистил Lines и все ок было.
Дело не в этом... а в том что, вышеприведенный код сам по себе корректно работает, но как только в коде (в теле ф-ции) появляется
Memo1->Lines->Clear();
т.е. вышеуказанный пример меняем:
Код:
Memo1->Lines->Clear();
CComPtr<IWebBrowser2> spWB;
CComPtr<IDispatch> spDisp;
OleInitialize(NULL);
CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
IID_IWebBrowser2, (void**)&spWB);
if (!spWB) return;
VARIANT vEmpty;
BSTR bstrURL = WideString("http://" + Edit1->Text).c_bstr();
HRESULT hr = spWB->Navigate(bstrURL, &vEmpty, &vEmpty, &vEmpty, &vEmpty);
CComPtr<IWebBrowser2> spWB;
CComPtr<IDispatch> spDisp;
OleInitialize(NULL);
CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
IID_IWebBrowser2, (void**)&spWB);
if (!spWB) return;
VARIANT vEmpty;
BSTR bstrURL = WideString("http://" + Edit1->Text).c_bstr();
HRESULT hr = spWB->Navigate(bstrURL, &vEmpty, &vEmpty, &vEmpty, &vEmpty);
или
Код:
CComPtr<IWebBrowser2> spWB;
CComPtr<IDispatch> spDisp;
OleInitialize(NULL);
CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
IID_IWebBrowser2, (void**)&spWB);
if (!spWB) return;
VARIANT vEmpty;
BSTR bstrURL = WideString("http://" + Edit1->Text).c_bstr();
HRESULT hr = spWB->Navigate(bstrURL, &vEmpty, &vEmpty, &vEmpty, &vEmpty);
Memo1->Lines->Clear();
CComPtr<IDispatch> spDisp;
OleInitialize(NULL);
CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
IID_IWebBrowser2, (void**)&spWB);
if (!spWB) return;
VARIANT vEmpty;
BSTR bstrURL = WideString("http://" + Edit1->Text).c_bstr();
HRESULT hr = spWB->Navigate(bstrURL, &vEmpty, &vEmpty, &vEmpty, &vEmpty);
Memo1->Lines->Clear();
как IWebBrowser не хочет делать Navigate и HRESULT hr == 0x80020008
что примерно переводится как Invalid Variant Parametr
переношу Memo1->Lines->Clear(); в любую другую ф-ю, вызываю ее в том месте где глючило - и все работает...
Код:
MyFunc(); // здесь работает
CComPtr<IWebBrowser2> spWB;
CComPtr<IDispatch> spDisp;
OleInitialize(NULL);
CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
IID_IWebBrowser2, (void**)&spWB);
if (!spWB) return;
VARIANT vEmpty;
BSTR bstrURL = WideString("http://" + Edit1->Text).c_bstr();
HRESULT hr = spWB->Navigate(bstrURL, &vEmpty, &vEmpty, &vEmpty, &vEmpty);
MyFunc(); // и здесь работает
//------------------------------------------------
void MyFunc (void)
{
Form1->Memo1->Lines->Clear();
}
CComPtr<IWebBrowser2> spWB;
CComPtr<IDispatch> spDisp;
OleInitialize(NULL);
CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
IID_IWebBrowser2, (void**)&spWB);
if (!spWB) return;
VARIANT vEmpty;
BSTR bstrURL = WideString("http://" + Edit1->Text).c_bstr();
HRESULT hr = spWB->Navigate(bstrURL, &vEmpty, &vEmpty, &vEmpty, &vEmpty);
MyFunc(); // и здесь работает
//------------------------------------------------
void MyFunc (void)
{
Form1->Memo1->Lines->Clear();
}
Если Release - опять глючит (та же ошибка)
Цитата: oxotnik333
Если в опциях компилятора стоит Full Debug - все работает
Если Release - опять глючит (та же ошибка)
Если Release - опять глючит (та же ошибка)
Ага. А попробуй не из под среды запускать , а просто тыча в exe. Из под среды работа прерывается там где exe работает.