Top.Mail.Ru
Ответы

Получить html код из WebBrowser(delphi 7)

нашел в сети ф-цию:
function WB_GetHTMLCode(WebBrowser: TWebBrowser; ACode: TStrings): Boolean;
var ps: IPersistStreamInit;
ss: TStringStream;
sa: IStream;
s: string;
begin
ps := WebBrowser.Document as IPersistStreamInit;
s := '';
ss := TStringStream.Create(s);
try
sa := TStreamAdapter.Create(ss, soReference) as IStream;
Result := Succeeded(ps.Save(sa, True));
if Result then ACode.Add(ss.Datastring);
finally
ss.Free;
end;
end;

при вызове выходит ошибка, не нравится строчка:
Result := Succeeded(ps.Save(sa, True));

в чём причина?
вызываю в memo.
или подскажите другой способ.
заранее спасибо.

По дате
По рейтингу
Аватар пользователя
Гуру
15лет

uses ActiveX;

function WB_SaveHTMLCode(WebBrowser: TWebBrowser; const FileName: TFileName): Boolean;
var ps: IPersistStreamInit;
fs: TFileStream;
sa: IStream;
SaveResult: HRESULT;
begin
ps := WebBrowser.Document as IPersistStreamInit;
fs := TFileStream.Create(FileName, fmCreate);
try
sa := TStreamAdapter.Create(fs, soReference) as IStream;
SaveResult := Succeeded(ps.Save(sa, True));
finally
fs.Free;
end;
end;

function WB_GetHTMLCode(WebBrowser: TWebBrowser; ACode: TStrings): Boolean;
var ps: IPersistStreamInit;
ss: TStringStream;
sa: IStream;
s: string;
SaveResult: HRESULT;
begin
ps := WebBrowser.Document as IPersistStreamInit;
s := '';
ss := TStringStream.Create(s);
try
sa := TStreamAdapter.Create(ss, soReference) as IStream;
SaveResult := Succeeded(ps.Save(sa, True));
if SaveResult then ACode.Add(ss.Datastring);
finally
ss.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
WB_SaveHTMLCode(Webbrowser1, 'c:\test.txt');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
WB_GetHTMLCode(Webbrowser1, Memo1.Lines);
end;
------------------------------------------------------------------------
Функция WB_SaveHTMLCode сохраняет открытую в данный момент страницу в файл test.txt. А чтобы перейти на какую-то страницу используй
WebBrowser1.Navigate('[ссылка заблокирована по решению администрации проекта]');
------------------------------------------------------------------
В твоей функции я не увидел SaveResult: HRESULT; , тебе в код нужно просто обьявить свою переменную так Result: HRESULT;
=================================================
Вот тебе литература delphiexpert.ru/view_lesson.php?id=28