關於獲取一個網站的返回信息函數. (Idhttp?Recv?) |
答題得分者是:pceyes
|
rainker
一般會員 發表:6 回覆:1 積分:1 註冊:2007-10-09 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
rainker
一般會員 發表:6 回覆:1 積分:1 註冊:2007-10-09 發送簡訊給我 |
|
pceyes
尊榮會員 發表:70 回覆:657 積分:1140 註冊:2003-03-13 發送簡訊給我 |
------
努力會更接近成功 |
pceyes
尊榮會員 發表:70 回覆:657 積分:1140 註冊:2003-03-13 發送簡訊給我 |
轉貼
[原]一个简单的函数回调演示 http://www.wa666.cn/?action=show&id=52 作用是取得網頁的HTML源碼,使用idHttp控件。 將獲取的過程寫在線程裏,不再主線程內運行,是防止界面的無響應現象。idAntiFree控件雖然可以做到,但是效果不明顯。很多時候線程裏不可能做太多的事情,可能用來通用化,而且線程之間的通信還是比較麻煩,用消息的方法雖然簡單,但是如果我用來接受消息的類是不可視的話,使用AllocateHWnd函數來建立消息句柄將佔用資源,所以這個時候使用回調函數是比較折中的辦法,雖然不太符合OO設計^_^. 下面是代碼(WinXP SP2 D2006測試通過)... [code delphi] unit MainFrm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdHTTP; type TCallBack = procedure(Html: string) of object; type TForm1 = class(TForm) mmo1: TMemo; btn1: TButton; edt1: TEdit; procedure btn1Click(Sender: TObject); private procedure myCallBack(Html: string); { Private declarations } public { Public declarations } end; THtmlThreade = class(TThread) private FHttp: TIdHTTP; FUrl: string; myCallBack: TCallBack; protected procedure Execute; override; public constructor Create(aUrl: string; CallBack: TCallBack); destructor Destroy; override; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.myCallBack(Html: string); begin mmo1.Text := Html; end; { THtmlThreade } procedure THtmlThreade.Execute; begin myCallBack(FHttp.Get(FUrl)); end; constructor THtmlThreade.Create(aUrl: string; CallBack: TCallBack); begin inherited Create(True); FUrl := aUrl; myCallBack := CallBack; FHttp := TIdHTTP.Create(nil); FreeOnTerminate := True; end; destructor THtmlThreade.Destroy; begin FHttp.Free; inherited Destroy; end; procedure TForm1.btn1Click(Sender: TObject); var mythread: THtmlThreade; begin mythread := THtmlThreade.Create(edt1.Text, myCallBack); mythread.Resume; end; end.[/code]
------
努力會更接近成功
編輯記錄
pceyes 重新編輯於 2008-02-10 09:15:51, 註解 貼圖‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |