if Assigned(wb1) then
        ///保证网页里有内容;即已经打开一个网页!
   begin
   try
        hdoc:=wb1.document as ihtmldocument2;
        if Assigned(HDoc) then
        //如果不为空
        begin
        mywbstr:=hdoc.body.outerText;
        end;
   except
   Exit;
   end;
   end;
我想做的事如果不为空就输出到字串mywbstr中,但是现在不知道为什么为空的时候也继续操作输出那一部,完全就会
出现内存错误,请知道的朋友指点一下为什么前面的判断会失败呢?怎么才能可靠的判断hdoc为空呢?

解决方案 »

  1.   

    在WebBrowser执行Navigate后你可以在WebBrowser的OnDocumentComplete判断执行情况,以及取某些值
      

  2.   

    procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    var
      CurWebrowser:   IWebBrowser;
      TopWebBrowser:   IWebBrowser;
      Document:   OleVariant;
      WindowName:   string;
    begin
      CurWebrowser := pDisp as IWebBrowser;
      TopWebBrowser:= (Sender as TWebBrowser).DefaultInterface;
      if CurWebrowser = TopWebBrowser then
      begin
        Document:=CurWebrowser.Document;
        showmessage( Document.body.outerText );
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      WebBrowser1.Navigate('www.google.com');
    end;