Форум: "Основная";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
ВнизОшибка с TWebBrowser Найти похожие ветки
← →
dmitry kholl (2006-09-22 16:14) [0]У меня в программе используется сразу несколько экземпляров браузера на разных закладках PageControl.
Для загрузки данных использую режим About.
Вот как я загружаю и выгружаю данные.procedure OpenBrowser(ABrowser: TWebBrowser);
begin
if not Assigned(ABrowser) then Exit;
ABrowser.Navigate("about:blank");
end;
procedure LoadBrowser(ABrowser: TWebBrowser; const AHTML: String = "");
var
Document: IHTMLDocument2;
V: OleVariant;
begin
if not Assigned(ABrowser) then Exit;
Document := ABrowser.Document as IHtmlDocument2;
V := VarArrayCreate([0, 0], varVariant);
V[0] := AHTML;
Document.Write(PSafeArray(TVarData(v).VArray));
Document.Close;
end;
procedure CloseBrowser(ABrowser: TWebBrowser);
begin
if not Assigned(ABrowser) then Exit;
ABrowser.Navigate("");
end;
Сначала вызываю OpenBrowser, потом загружаю LoadBrowser и
при закрытии CloseBrowser.
И там много раз при переключении закладок данные подгружаются заново.
Но периодически происходит серия жудких AV.
Подскажите как правильно работать с этим браузером. Я уже третий день бодаюсь с этим. Пока не очень получается.
← →
Орион © (2006-09-22 17:05) [1]> Подскажите как правильно работать с этим браузером.
Взять TEmbeddedWB.
← →
Орион © (2006-09-22 17:06) [2]Если AV будут и дальше, то смотреть 17 строку кода.
Кстати, а чем жуДкие AV, от не жуДких отличаются?
← →
dmitry kholl (2006-09-22 18:02) [3]> Взять TEmbeddedWB.
С ним ошибка осталась.
Еще одна связанная наверно с АV проблемма при каждой такой загрузке
растет кол-во используемой памяти.
← →
dmitry kholl (2006-09-22 18:06) [4]> Если AV будут и дальше, то смотреть 17 строку кода.
Щас уже мне не до юмора :( это шутка или намек на то что нужно самому освобождатьAHTML
который я передаю в браузер?
← →
DiamondShark © (2006-09-22 22:10) [5]
> Но периодически происходит серия жудких AV.
Потому что метод Navigate асинхронный.
Сразу после возврата из Navigate документа может ещё не быть. Соответственно, свойство Document возвращает nil.
Гарантированная точка, в которой существует документ -- событие OnNavigateComplete2.
← →
Percent (2006-09-23 11:42) [6]procedure OpenBrowser(ABrowser: TWebBrowser);
begin
if not Assigned(ABrowser) then Exit;
ABrowser.Navigate("about:blank");
while (ABrowser.Document = nil) do;
end;
← →
DiamondShark © (2006-09-23 12:09) [7]
> Percent (23.09.06 11:42) [6]
Пробовал?
← →
Percent (2006-09-23 15:43) [8]Пробовал?
А то б я предлагал...
← →
dmitry kholl (2006-09-26 17:05) [9]Я пока пошел другим путем.
При каждой перегрузке я заново креирую экземпляр класса.
Это "вроде" помогло избавится от AV.
Но с браузером все же есть еще не понятный момент.
После каждой загрузки данных в него, растет используемая программой память.
Мне в принцепе подсказали по чему это могло бы так быть(из-за того что передаю Делфийский String и браузер сам не освобождает эту память).
Я еще не пробывал переделать это местоDocument := ABrowser.Document as IHtmlDocument2;
V := VarArrayCreate([0, 0], varVariant);
V[0] := AHTML;
Document.Write(PSafeArray(TVarData(v).VArray));
Document.Close;
Как вы загружаете в него данные в режиме about?
← →
dmitry kholl (2006-09-26 17:10) [10]> Потому что метод Navigate асинхронный.
> Сразу после возврата из Navigate документа может ещё не
> быть. Соответственно, свойство Document возвращает nil.
> Гарантированная точка, в которой существует документ --
> событие OnNavigateComplete2.
Спасибо за обьяснение. Теперь стало понятнее.
А есть ли возможность запретить выделение текста в браузере?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.081 c