程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 將網頁內容保存為字符串以及根據字符串顯示成網頁

將網頁內容保存為字符串以及根據字符串顯示成網頁

編輯:Delphi

  經常看到有人在論壇裡問,如何將網頁內容保存為字符串以及根據字符串顯示成網頁。這裡說說我的看法。

  將網頁內容保存為字符串很簡單,只需(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編程產生了濃厚的興趣。大有不精通這類編程誓不罷休之勢。歡迎感興趣著與我共同探討。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved