在我的應用程序中,我想將網站中的所有文本複製到字符串變量中。由於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