Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

TMemo::Lines::Clear глючит?

11
04 июня 2008 года
oxotnik333
2.9K / / 03.08.2007
Загружаю хтмл документ:
 
Код:
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.
Если где нибудь в теле этой ф-ции прописать

Memo1->Lines->Clear();

то документ просто не загружается HRESULT hr = spWB->Navigate() в hr приходит код ошибки (0x80020008)

В чем дело?
479
04 июня 2008 года
Ухух
142 / / 05.05.2006
А просто Memo1->Clear();

А после Clear Add() не надо?
246
04 июня 2008 года
GIZMO
1.8K / / 30.07.2004
Цитата: oxotnik333

...
Если где нибудь в теле этой ф-ции прописать
...
В чем дело?


Действительно для TMemo обычно вызывается "его" Clear(), а не св-ва Lines.

ЗЫ: "где-нибудь" тоже круто, ты уж приводи полный код:)

11
04 июня 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Ухух

А после Clear Add() не надо?


А нахрена?

11
04 июня 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: 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);
Memo1->Lines->Clear();


как IWebBrowser не хочет делать Navigate и HRESULT hr == 0x80020008
что примерно переводится как Invalid Variant Parametr
11
05 июня 2008 года
oxotnik333
2.9K / / 03.08.2007
что интересно:
переношу 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();
}
11
06 июня 2008 года
oxotnik333
2.9K / / 03.08.2007
Если в опциях компилятора стоит Full Debug - все работает
Если Release - опять глючит (та же ошибка)
479
07 июня 2008 года
Ухух
142 / / 05.05.2006
Цитата: oxotnik333
Если в опциях компилятора стоит Full Debug - все работает
Если Release - опять глючит (та же ошибка)



Ага. А попробуй не из под среды запускать , а просто тыча в exe. Из под среды работа прерывается там где exe работает.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог