Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.05;
Скачать: CL | DM;

Вниз

Ошибка с 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.045 c
2-1161530492
***mikle***
2006-10-22 19:21
2006.11.05
Глюк в Делфе или у меня?


6-1150292201
Интересующийся
2006-06-14 17:36
2006.11.05
Список всех машин в диапозоне между двумя IP


1-1159414736
apic
2006-09-28 07:38
2006.11.05
Работа с Edit


2-1161085423
L15
2006-10-17 15:43
2006.11.05
Создание Теста на Делфи


6-1150401090
XeON
2006-06-15 23:51
2006.11.05
Посчет DialUp траффика