将网页内容保存为字符串以及根据字符串显示成网页

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

经常看到有人在论坛里问,如何将网页内容保存为字符串以及根据字符串显示成网页。这里说说我的看法。

将网页内容保存为字符串很简单,只需(webbrowser1.Document as Ihtmldocument2).body.outerHtml一句就可得到网页的html源码,一个WideString型。如果考虑到要等ie下载完整个网页后再保存为string可以这样写(在窗体中放置了一个memo控件以查看该页面的html源码)。

procedure tatonreg.readdocument;

var

IpStream: IPersistStreamInit;

MemoryStream: TMemoryStream;

begin

ie为twebbrowser控件或为一个twebbrowser实例

with ie do begin

while (ReadyState <> READYSTATE_COMPLETE) and (not forms.Application.Terminated) do

Forms.Application.ProcessMessages;

if Assigned(document) then begin

MemoryStream := TMemoryStream.Create;

try

IpStream := document as IPersistStreamInit;

if not Assigned(IpStream) then showmessage('错误') else

if Succeeded(IpStream.save(TStreamadapter.Create(A), TRUE))

then begin

MemoryStream.Seek(0, 0);

memo1.lines.LoadFromStream(A);

end;

except

end;

MemoryStream.Free;

end;

end;

end;

程序运行后memo1.text就是该网页的源码了。

twebbrowser控件不能直接根据字符串显示成网页,必须先把string转成stream。

procedure tatonreg.loaddocument;

var

m:tmemorystream;

begin

M := TMemoryStream.Create;

memo1.Lines.SaveToStream(M);

M.seek(0, 0);

if not Assigned(ie.document) then begin

ie.navigate('about:blank');

while ie.readystate <> READYSTATE_COMPLETE do Forms.Application.ProcessMessages;

end;

(ie.Document as IPersistStreamInit).Load(TStreamadapter.Create(M));

end;

我做了一个这类的软件,可到我的个人主页上下载http://aton.126.com

这段时间我对ie编程产生了浓厚的兴趣。大有不精通这类编程誓不罢休之势。欢迎感兴趣着与我共同探讨。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航