我写了如下代码,运行时崩溃,请各位前辈指点,谢谢!procedure TForm1.WebBrowser1DownloadComplete(Sender: TObject);
begin
      if Sender is TWebBrowser then begin
        Form1.Memo1.Lines.Add(TWebBrowser(Sender).OleObject.Document.all.tags('td').item(5).innertext);
        TWebBrowser(Sender).Free;
      end;
end;

解决方案 »

  1.   

    单步跟踪一下,free时候崩溃?
    在一个控件的事件里释放控件,可能是不行的,
    因为该事件被执行完,控件还行需要做别的一些事情,而此时控件已经被释放了!
      

  2.   

    怎么个崩溃,
    TWebBrowser(Sender).Free;
    这句话是干嘛的,用完就放掉了??你又不是动态创建的,放掉后,在访问肯定出错
      

  3.   

    为什么要在这里Free,把Free这句去掉
      

  4.   

    在这句出错
     Form1.Memo1.Lines.Add(TWebBrowser(Sender).OleObject.Document.all.tags('td').item(5).innertext);
      

  5.   

    去掉那个free,然后检查TWebBrowser(Sender).OleObject.Document中是否有不存在的项
    TWebBrowser(Sender).OleObject.Document.all.tags('td').item(5)是否有这个元素
      

  6.   

    谢谢各位,原来我用错了事件,如下代码成功运行
    procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    begin
        if Sender is TWebBrowser then begin
            Form1.Memo1.Lines.Add(TWebBrowser(Sender).OleObject.Document.all.tags('td').item(5).innertext);
        end;
    end;