使用WebBrowser1.Navigate打开网页得到里面的数据,关于这样的错误怎样捕获,怎样解决 谢谢 ( 积分: 50 )

  • 主题发起人 主题发起人 980
  • 开始时间 开始时间
9

980

Unregistered / Unconfirmed
GUEST, unregistred user!
uses
mshtml;
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('http://127.0.0.1/zhwl/itm.asp');
end;
在time 的事件里
procedure TForm1.Timer1Timer(Sender: TObject);
var
Docintf:IHTMLDocument2;
begin
if not Assigned(WebBrowser1.Document) then Exit;
Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterText);
end;
能够的到文本内容。但是出这样的错误。


前提是我的网页是一秒钟刷新一次。


错误提示是
Project Project1.exe raised exception class EAccessviolation with message 'Access violation at address 004782CB in module 'project1.exe', read of address 00000000'.Process stopped. Use Step or Run to continue.

错误提示在
Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterText);
继续运行,在出一个

'Access violation at address 004782CB in module 'project1.exe', read of address 00000000' 这样的错误提示 后正常运行,一会又出这样的提示,该怎样解决 。谢谢了
 
uses
mshtml;
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('http://127.0.0.1/zhwl/itm.asp');
end;
在time 的事件里
procedure TForm1.Timer1Timer(Sender: TObject);
var
Docintf:IHTMLDocument2;
begin
if not Assigned(WebBrowser1.Document) then Exit;
Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterText);
end;
能够的到文本内容。但是出这样的错误。


前提是我的网页是一秒钟刷新一次。


错误提示是
Project Project1.exe raised exception class EAccessviolation with message 'Access violation at address 004782CB in module 'project1.exe', read of address 00000000'.Process stopped. Use Step or Run to continue.

错误提示在
Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterText);
继续运行,在出一个

'Access violation at address 004782CB in module 'project1.exe', read of address 00000000' 这样的错误提示 后正常运行,一会又出这样的提示,该怎样解决 。谢谢了
 
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('about:blank');
WebBrowser1.Navigate('http://127.0.0.1/zhwl/itm.asp');
end;

如果还是出错 可能时网页的问题
 
楼上的 你说的这里肯定没有问题。问题错误是这里
Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterText);
因为我的页面作了1秒从数据库里去记录的。或者把这个错误屏蔽掉怎样做
 
if not Assigned(WebBrowser1.Document) then Exit;

改成

WebBrowser1.ReadyState <> READYSTATE_COMPLETE
 
try
Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterText);
except
end;
就可以屏蔽掉错误
 
楼上的
错误提示是
Project Project1.exe raised exception class EAccessviolation with message 'Access violation at address 004782CB in module 'project1.exe', read of address 00000000'.Process stopped. Use Step or Run to continue.



这个错误 向你这样是不可能的

继续求解
 
我的答案你试了没有?
 
试了 问题是这样的 我这个网叶是那种 刷新的时候 就相当于 在打开网页的时候 手动的 点击 上面 “查看” 下面的 “刷新” 就是这样的 他在 “刷新” 的时候 就出这样的错误提示了
错误提示是
Project Project1.exe raised exception class EAccessviolation with message 'Access violation at address 004782CB in module 'project1.exe', read of address 00000000'.Process stopped. Use Step or Run to continue.




,我想把它 屏蔽掉 还能够继续运行这个 time事件
 
procedure TForm1.Timer1Timer(Sender: TObject);
var
Docintf:IHTMLDocument2;
begin
if WebBrowser1.ReadyState <> READYSTATE_COMPLETE then Exit;
Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterText);
end;

是这样试的吗?什么结果你要说啊。
 
就是你说的这样 错误提示:
Project Project1.exe raised exception class EAccessviolation with message 'Access violation at address 004782CB in module 'project1.exe', read of address 00000000'.Process stopped. Use Step or Run to continue
 
procedure TForm1.Timer1Timer(Sender: TObject);
var
Docintf:IHTMLDocument2;
begin
CoInitialize(nil);
if WebBrowser1.ReadyState <> READYSTATE_COMPLETE then Exit;
Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterText);
CoUninitialize;
end;

这样看看
 
要uses activex
 
还是老样子 这个错误提示
uses
mshtml;
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('http://www.17856.com');
end;
在time 的事件里
procedure TForm1.Timer1Timer(Sender: TObject);
var
Docintf:IHTMLDocument2;
begin
CoInitialize(nil);
if WebBrowser1.ReadyState <> READYSTATE_COMPLETE then Exit;
Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterText);
CoUninitialize;
end;


你测试一下 这个 旧能够看到了
用户名:0009
密码:123456
 
我已经给你我的程序了啊。你没试?
 
uses
mshtml,activex;
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('http://www.17856.com');
end;
在time 的事件里
procedure TForm1.Timer1Timer(Sender: TObject);
var
Docintf:IHTMLDocument2;
begin
CoInitialize(nil);
if WebBrowser1.ReadyState <> READYSTATE_COMPLETE then Exit;
Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterText);
CoUninitialize;
end;


你测试一下 这个 旧能够看到了
用户名:0009
密码:123456
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
mshtml, Dialogs, ExtCtrls, OleCtrls, SHDocVw_TLB, EmbeddedWB, StdCtrls,activex;

type
TForm1 = class(TForm)
WebBrowser1: TEmbeddedWB;
Timer1: TTimer;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('http://www.17856.com');

end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
Docintf:IHTMLDocument2;
begin
CoInitialize(nil);
if WebBrowser1.ReadyState <> READYSTATE_COMPLETE then Exit;
Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterText);
CoUninitialize;
end;


end.

我这里没问题。你到底有没有试我给你的代码?
 
我就是用的 你的代码 你把时间 放成1000的 这样你可以看到的 ,但是的 必须登陆 到这个界面 一般的界面是不出这样的错误的 因为这个页面有个 像手动刷新的 似的 才出这样的提示
 
我登陆进去试了,没问题。
你仔细看我的代码,不是第一次回答你的那个。
 
你这种试试

procedure TForm1.FormCreate(Sender: TObject);
begin
//WebBrowser1.Navigate('about:blank');
WebBrowser1.Navigate('http://www.17856.com');
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
CoInitialize(nil);
if WebBrowser1.ReadyState <> READYSTATE_COMPLETE then Exit;
Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterText);
CoUninitialize;

end;
 
后退
顶部