Всем привет! Такая проблема: скачиваю страницу из инета, и запихиваю ее в IHTMLDocument2 (здесь все ок) Затем выдираю ее из IHTMLDocument2 следующей функцией: Code: function GetHtml(doc: IHtmlDocument2): string; var iDisp: IDispatch; iCollection: IHTMLElementCollection; mm:IHTMLElement; begin result := ''; iCollection := doc.all.Tags('HTML') as IHTMLElementCollection; iDisp := iCollection.item(0, 0); result := (iDisp as IHTMLElement).outerHTML; end; с выполнившимися скриптами и ищу значится что мне там нужно. Все работает на 95% сайтов, а на некоторых в строке result := (iDisp as IHTMLElement).outerHTML; происходит сначала Access violation in module "mshtml.dll', а потом сразу же Access violation in module "jscript.dll' Пробовал заменять выкинуть все, и оставить только result:=Doc.body.outerHTML; все равно, ошибки те же. кто-нибудь сталкивался? или кто-нибудь может подсказать, как это решить?
Попробуй в try..except запихнуть, посмотри какую ошибку скажет. Вот так: Code: function GetHtml(doc: IHtmlDocument2): string; var iDisp: IDispatch; iCollection: IHTMLElementCollection; mm:IHTMLElement; begin result := ''; [B]try [/B] iCollection := doc.all.Tags('HTML') as IHTMLElementCollection; iDisp := iCollection.item(0, 0); result := (iDisp as IHTMLElement).outerHTML; [B]except on E: MessageBox('Ошибка: ' + E.Message); end;[/B] end;
Да, я понял, просто тут вообще какая-то лажа получается (ошибка write to memory address вылазит), но это если делаю так: showmessage(gethtml(doc)); если делаю так (doc обьявлен приватно для процедуры): memo.text:=(gethtml(doc)); ошибка не вываливается, если делаю так же, но doc - глобальная переменная, то ошибка снова вываливается при чем с сообщением "priveledged instruction"
"privileged instruction" показал, но это он че-то 1 раз такое показал, а все остальные разы тупо "Access violation ..."