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

Вниз

Утечка памяти и как лечить, не пойму ничего IEBrowser   Найти похожие ветки 

 
Signal   (2016-03-19 10:36) [0]

[CODE]
for i := 200 to iDoc.all.Get_length-1 do
 begin
   iDisp := iDoc.Get_all.item(pred(i), 0);
   iDisp.QueryInterface(IHTMLElement, iElement);
[/CODE]
iDisp в конечном итоге начинает жрать кучу памяти и вылетает все сообщением Out of system resource.
Нашел в интернете только упоминание это проблемы для TwebBrowser, там надо править исходник этого Twebbrowser, а вот
iDoc у меня обявлен в VAR как IHTMLDocument2;
а создаю его текстом из файла следующим методом:
[CODE]
function GetHTTPTEXT_DOC2(TextHTML:String):IHTMLDocument2;
var
   V: OleVariant;
begin
 Result:=coHTMLDocument.Create as IHTMLDocument2;
 V:=VarArrayCreate([0,0], varVariant);
 V[0]:=TextHTML;
 Result.Write(PSafeArray(TVarData(v).VArray));
end;

[/CODE]
вообщем что можно использовать вместо конструкции
   iDisp := iDoc.Get_all.item(pred(i), 0);
   iDisp.QueryInterface(IHTMLElement, iElement);


 
han_malign ©   (2016-03-21 17:03) [1]

можно попробовать завернуть во врапер, чтобы все неявные ссылки гарантированно очищались(в неявных секциях try finally).


procedure wrap_collection;
  var __walk: IHTMLElementCollection;
  procedure wrap_element(i: integer);
  var iDisp: IDispatch;
       iElement: IHTMLElement;
  begin
     iDisp := __walk.item(pred(i), 0);
     iDisp.QueryInterface(IHTMLElement, iElement);
     ...
  end;
var i: integer;
begin
  __walk:= iDoc.all;
  for i := 200 to __walk.length-1 do wrap(i);
end;


 
Signal   (2016-03-23 22:03) [2]

было бы круто
__walk.length-1

если бы их не было бы 1,5 милиона в каждом цикле...гы

я,конечно разными особенностями это решил, но это костыли и бубны


 
ВладОшин ©   (2016-03-24 13:46) [3]

я периодически грохаю TwebBrowser и пересоздаю
т.к.

> надо править исходник этого Twebbrowser

даже так у меня не получилось, все равно течет


 
Signal   (2016-03-24 16:24) [4]

я не через TWebBrowser а чере iWebbrowser2, т.е. через Internet Explorer, грохать его не вариант и обновлять страницу тоже, т.к. все на странице именится



Страницы: 1 вся ветка

Текущий архив: 2018.03.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.004 c
15-1471037402
Юрий
2016-08-13 00:30
2018.03.18
С днем рождения ! 13 августа 2016 суббота


2-1459159042
TheEd
2016-03-28 12:57
2018.03.18
Редактирование ячейки DBGridEh только кнопкой


2-1459610574
chuxlo
2016-04-02 18:22
2018.03.18
Командная строка


6-1263673971
zSvetik
2010-01-16 23:32
2018.03.18
Видеотрансляция по сети


2-1458373007
Signal
2016-03-19 10:36
2018.03.18
Утечка памяти и как лечить, не пойму ничего IEBrowser