如何将网页中的内容读到TRichEdit中 |
尚未結案
|
fangwy
中階會員 ![]() ![]() ![]() 發表:99 回覆:139 積分:62 註冊:2003-09-10 發送簡訊給我 |
|
Stallion
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
fangwy
中階會員 ![]() ![]() ![]() 發表:99 回覆:139 積分:62 註冊:2003-09-10 發送簡訊給我 |
使用HTMLDocument.body读取网页内容时出现'Access violation at address 0048A1D0 in module 'Project1.exe''错误?
我的代码是:
var vv: Variant; HTMLDocument: IHTMLDocument2; begin with TWebBrowser.Create(nil) do begin try Navigate('E:\book\VC\ActiveX\ÓATLºÍMFCÀ´´´½¨ActiveX¿Ø¼þ.htm'); HTMLDocument := Document as IHTMLDocument2; RichEdit1.lines.text:=HTMLDocument.body; finally HTMLDocument.close; Free; end; end; end; |
malanlk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:20 回覆:694 積分:577 註冊:2004-04-19 發送簡訊給我 |
TWebbrowser 這類元件不能用這種寫法. 因為當你下達 Navigate時 你就進入多執行緒的狀態, TWebBrowser 會另開一堆 Thread 去跟 Server 要資料, 再這同時 你的程式繼續執行, 到 RichEdit1.lines.text:=HTMLDocument.body 這行時, 因為 Server 端資料還沒回來 所以出現你所列出的錯誤... 程式的基本調子應該像這樣
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw, MSHtml, ComCtrls, ActiveX, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; WB: TWebBrowser; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure WBDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin WB.OnDocumentComplete := WBDocumentComplete; WB.Navigate('http://tw.yahoo.com/'); end; procedure TForm1.WBDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin Memo1.Lines.Clear; Memo1.lines.text := (WB.Document as IHTMLDocument2).body; end; end.討論 TWebBrowser 的文件很多, 要不要先 study 一下有問題再問... 發表人 - malanlk 於 2005/08/09 14:47:38 |
fangwy
中階會員 ![]() ![]() ![]() 發表:99 回覆:139 積分:62 註冊:2003-09-10 發送簡訊給我 |
引言: TWebbrowser 這類元件不能用這種寫法. 因為當你下達 Navigate時 你就進入多執行緒的狀態, TWebBrowser 會另開一堆 Thread 去跟 Server 要資料, 再這同時 你的程式繼續執行, 到 RichEdit1.lines.text:=HTMLDocument.body 這行時, 因為 Server 端資料還沒回來 所以出現你所列出的錯誤... 程式的基本調子應該像這樣用你的方法好象还是提示同样的错误,如果你有时间的话帮我再看看.谢谢.unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw, MSHtml, ComCtrls, ActiveX, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; WB: TWebBrowser; Memo1: TMemo; Memo2: TMemo; procedure Button1Click(Sender: TObject); procedure WBDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); private { Private declarations } public { Public declarations } end; var Form1: TForm1; WB1: TWebBrowser = nil; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin WB.OnDocumentComplete := WBDocumentComplete; WB.Navigate('http://tw.yahoo.com/'); end; procedure TForm1.WBDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); var vv: Variant; i: Integer; begin Memo1.Lines.Clear; Memo1.lines.text := (WB.Document as IHTMLDocument2).body; end; end.討論 TWebBrowser 的文件很多, 要不要先 study 一下有問題再問... |
malanlk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:20 回覆:694 積分:577 註冊:2004-04-19 發送簡訊給我 |
|
fangwy
中階會員 ![]() ![]() ![]() 發表:99 回覆:139 積分:62 註冊:2003-09-10 發送簡訊給我 |
|
malanlk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:20 回覆:694 積分:577 註冊:2004-04-19 發送簡訊給我 |
|
fangwy
中階會員 ![]() ![]() ![]() 發表:99 回覆:139 積分:62 註冊:2003-09-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |