首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请教怎么改进-这个IDHttp的简单取网页的代码

2012-03-22 
请问如何改进----这个IDHttp的简单取网页的代码?大虾帮看下,谢了程序的主要功能是,每一段时间取得网页的代

请问如何改进----这个IDHttp的简单取网页的代码?
大虾帮看下,谢了

程序的主要功能是,每一段时间取得网页的代码一次,并放到Memo1里面。

请问:
1.为什么我测试时老老后面就报内存错误?
2.Timer的执行时间是5秒,是不是短了?会有影响吗?
3.那个IdAntiFreeze为什么Active后反而错误挺多?
4.如果,我要同时取多个网页要怎么改?请给个思路。
5.如何让程序不要那么多错误代码?

Delphi(Pascal) code
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ExtCtrls, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,  IdTCPClient, IdHTTP, IdAntiFreezeBase, IdAntiFreeze;type  TMyDownLoad=class(TThread)        protected        procedure   Execute;override;        procedure   Download;end; TForm1 = class(TForm)Edit1: TEdit;Timer1: TTimer;Button1: TButton;Memo1: TMemo;IdAntiFreeze1: TIdAntiFreeze;IdHTTP1: TIdHTTP;procedure Timer1Timer(Sender: TObject);procedure Button1Click(Sender: TObject);    procedure IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;      const AWorkCount: Integer);    procedure FormCreate(Sender: TObject);privatepublicend;varForm1: TForm1;i:Integer;implementation{$R *.dfm}procedure   TMyDownLoad.Download;Var    UnitName,PathName:String;    IDHTTP:   TIDHttp;    htm:string;begin    Inc(i);     screen.Cursor:=crHourGlass;        IDHTTP:=   TIDHTTP.Create(nil);    try    //Form1.Memo1.Clear;    htm:=IdHTTP.Get('http://www.163.com');    Form1.Memo1.Text:=htm;    except        showmessage( '网络出错未能下载完成! ');        Exit;    end;    screen.Cursor:=crDefault;        showmessage( '下载完成! ');end;procedure   TMyDownLoad.Execute;begin    inherited;    Download;end; procedure TForm1.Timer1Timer(Sender: TObject);begin            TMyDownLoad.Create(false);  //多线程    Edit1.Text:=IntToStr(i);        end;procedure TForm1.Button1Click(Sender: TObject);begin  Timer1.Enabled:=true; end;procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;  const AWorkCount: Integer);begin    Application.ProcessMessages; end;procedure TForm1.FormCreate(Sender: TObject);begin    i:=0;end;end.


[解决办法]
上一次还没取完,下一次又进来了,

timer事件中,先 enable = false,下载完并处理完,然后再 enable=true
[解决办法]
IDHTTP创建后没有释放
Delphi(Pascal) code
procedure   TMyDownLoad.Download;Var    UnitName,PathName:String;    IDHTTP:   TIDHttp;    htm:string;begin    Inc(i);     screen.Cursor:=crHourGlass;        IDHTTP:=   TIDHTTP.Create(nil);    try      try        //Form1.Memo1.Clear;        htm:=IdHTTP.Get('http://www.163.com');        Form1.Memo1.Text:=htm;      except        showmessage( '网络出错未能下载完成! ');        Exit;      end;    finally      IDHTTP.Free;    end;    screen.Cursor:=crDefault;        showmessage( '下载完成! ');end;
[解决办法]
探讨
引用:

上一次还没取完,下一次又进来了,

timer事件中,先 enable = false,下载完并处理完,然后再 enable=true

顶一个,试试这个方法。

热点排行