在delphi 7中使用idhttp抓取网页,造成窗口无反应的假死状态。通过搜索获得两种方法。

1.写在线程中,但是调用比较麻烦

2.使用delphi 提供的idantifreeze(必须安装indy)。在indy misc中将idfreeantifreeze放入程序中,

将OnlyWhenIdle状态修改为False即可。方便简单。

=====================================

直接采用Delphi自带Control控件INDY组件为例.新建个工程,放上个TIdHTTPControl控件,个TIdAntiFreezeControl控件,个TProgressBar用于显示下载进度.最后放上个TButton用于开始执行我们命令.代码如下:

procedure TForm1.Button1Click(Sender: TObject);//点击按钮时候开始下载我们文件
var
MyStream:TMemoryStream;
begin
IdAntiFreeze1.OnlyWhenIdle:=False;//设置使有反应.
MyStream:=TMemoryStream.Create;
try
IdHTTP1.Get('http://www.138soft.com/download/Mp3ToExe.zip',MyStream);//下载我站点个ZIP文件
except//INDYControl控件般要使用这种try..except结构.
Showmessage('网络出错!');
MyStream.Free;
Exit;
end;
MyStream.SaveToFile('c:\Mp3ToExe.zip');
MyStream.Free;
Showmessage('OK');
end;

procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);//开始下载前,将ProgressBar1最大值设置为需要接收数据大小.
begin
ProgressBar1.Max:=AWorkCountMax;
ProgressBar1.Min:=0;
ProgressBar1.Position:=0;
end;

procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);//接收数据时候,进度将在ProgressBar1显示出来.
begin
ProgressBar1.Position:=ProgressBar1.Position+AWorkCount;
end;

  IdHTTP1Get还有种形式就是获取串:例如,上面可以改写成:

procedure TForm1.Button1Click(Sender: TObject);
var
MyStr:String;
begin
IdAntiFreeze1.OnlyWhenIdle:=False;//设置使有反应.
try
MyStr:=IdHTTP1.Get('http://www.138soft.com/default.htm');
except
Showmessage('网络出错!');
Exit;
end;
Showmessage(MyStr);
end;

出处:http://hi.baidu.com/yuqingtan/blog/item/a9771c3d793cb6f73c6d9737.html

http://www.vckbase.com/module/articleContent.php?id=4385

最新文章

  1. VMware虚拟机无法访问外网
  2. easyUI 树的上下文菜单
  3. iOS相关思考题
  4. Python学习(5)条件语句
  5. 百度地图API:利用瓦片生成工具,自定义背景图片
  6. 4.css度量单位
  7. 修改 SVN 账户密码的方法
  8. HDU 1027 Ignatius and the Princess II 选择序列题解
  9. POJ 3461 Oulipo(模式串在主串中出现的次数)
  10. CodeForces 10C. Digital Root
  11. django manage.py 的各种功能
  12. ural1471 Distance in the Tree
  13. 深入理解java String 及intern
  14. C:数据结构与算法之单链表
  15. MySQL数据库的各种存储引擎详解
  16. android:如何通过chrome远程调试APP中的webView的h5代码
  17. 『TensorFlow』批处理类
  18. sku 加减号的增删
  19. android 开发 实现一个app的引导查看页面(使用ViewPager组件)
  20. python ipython spyder

热门文章

  1. C++中的操作符重载
  2. php抽象类与接口的区别
  3. mudOS配置
  4. LinkList的实现
  5. javascript - 工作笔记 (事件四)
  6. android模块
  7. 960 grid 使用
  8. Java实现邮件代理发送
  9. UI线程与worker线程
  10. git使用三把斧