Форум: "Начинающим";
Текущий архив: 2018.03.18;
Скачать: [xml.tar.bz2];
ВнизУтечка памяти и как лечить, не пойму ничего 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c