在我的应用程序中,我想将网站中的所有文本复制到字符串变量中。由于Indy的一些问题,我想使用webbrowser组件。delphi webbrowser从网站复制文本
下面的代码工作完美的我:
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('www.tribalwars.nl');
while WebBrowser1.Busy do
Application.ProcessMessages;
Memo1.Lines.Add((WebBrowser1.Document as IHTMLDocument2).body.innerText);
end;
然而,在上面的例子中我使用了我的Form1上手动创建一个web浏览器。 现在我想在运行时创建它。我尝试下面的代码:
procedure TForm1.Button2Click(Sender: TObject);
var Web: TWebBrowser;
begin
Web := TWebBrowser.Create(nil);
Web.Navigate('www.tribalwars.nl');
while Web.Busy do
Application.ProcessMessages;
Memo1.Lines.Add((Web.Document as IHTMLDocument2).body.innerText); //This line raises the error mentioned below
Web.Free;
end;
不幸的是它不断提高以下错误:
项目PROJECT1.EXE引发的异常类$ 0000005与消息“访问冲突在0x005d9b4f:读取0x00000000地址的”。
我想我正在尝试使用尚未创建或尚未创建的东西。 我希望有人能帮助我做到这一点!
编辑:whosrdaddy提到我应该使这个组件可见。我怎样才能做到这一点?我想这一点,但它不工作:
procedure TForm1.Button2Click(Sender: TObject);
var Web: TWebBrowser;
begin
Web := TWebBrowser.Create(nil);
Web.Left := 50;
Web.Top := 50;
Web.Width := 50;
Web.Height := 50;
Web.Visible := True;
Application.ProcessMessages;
Web.Navigate('www.tribalwars.nl');
while Web.Busy do
Application.ProcessMessages;
Memo1.Lines.Add((Web.Document as IHTMLDocument2).body.innerText);
Web.Free;
end;
的组件提供所需的可见的(即,拥有者的形式)或其他它不会呈现页面,因此文件将是零。把浏览器放在一个看不见的形式... – whosrdaddy
@whosrdaddy:我怎样才能看到它? (请参阅编辑开始帖子) – Teun
只需在设计模式下使用浏览器创建第二个表单,并将表单可见属性设置为false,然后在运行时创建该表单... – whosrdaddy