Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.47 MB
Время: 0.037 c
8-1137653425
ronyn
2006-01-19 09:50
2006.11.05
DS Pack прокрутка.


2-1161167324
Megabyte
2006-10-18 14:28
2006.11.05
Поиск файлов с помощью FindFirst


2-1161155855
Alex_C
2006-10-18 11:17
2006.11.05
Как правильно написать свой компонент?


2-1161494250
Любовь
2006-10-22 09:17
2006.11.05
delphi


15-1160661814
Один из
2006-10-12 18:03
2006.11.05
Возможно ли заработать на встраиваемой рекламе?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский