Delphi

本类阅读TOP10

·分布式网络考试系统原型分析及实现
·游戏外挂设计技术探讨①
·使用HOOK随心监视Windows
·Delphi 水晶报表打包解决
·试题库开发中非文本数据的处理
·如何将几个DBGRID里的内容导入同一个EXCEL表中....的问题
·如何使用Delphi设计强大的服务器程序
·工人线程中关闭窗体的实现
·用DLL方式封装MDI子窗体。
·支持XP下托盘栏气球提示的托盘单元

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
将网页内容保存为字符串以及根据字符串显示成网页

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

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

将网页内容保存为字符串很简单,只需(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编程产生了浓厚的兴趣。大有不精通这类编程誓不罢休之势。欢迎感兴趣着与我共同探讨。

 




相关文章

相关软件