while 循环出什么问题了??

simplez 2003-10-19 11:57:06
我有一个网页列表,比如
1.htm
2.htm
3.htm
...
我希望窗体上的一个TWebBrowser控件可以按顺序依次访问列表里的网页
我现在是通过while结合TWebBrowser的OnDocumentComplete事件来做的:
i:=1;
while i<4 do
begin
webbrowser1.Navigate(inttostr(i)+'.htm');
end;

procedure TDataGetter.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
i:=i+1;
end;

但好像那个webbrowser控件和form是线程独立的,那边还没等到网页下载完成,while就自己又继续循环起来了,而且整个程序就像陷入死循环一样不能操作了。
请各位大哥指点迷津啊。
...全文
53 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ShiStone 2003-10-20
  • 打赏
  • 举报
回复
在While中加入i := i + 1怎么样呢?
simplez 2003-10-20
  • 打赏
  • 举报
回复
请教楼上的什么意思?用case of 语句吗?我那个循环很大的,有几百万次,连for都不能用.
sixgj 2003-10-20
  • 打赏
  • 举报
回复
CASE OF
simplez 2003-10-20
  • 打赏
  • 举报
回复
谢谢大家,我自己搞定了,用docmentiscomplete事件递归.
DelphiBird 2003-10-20
  • 打赏
  • 举报
回复
application.pocessmessages;
sleep(50);
每个循环中判断一下下载状态
status=3 or 4
hiflower 2003-10-20
  • 打赏
  • 举报
回复
procedure TDataGetter.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
i:=i+1;
// PostMessage 或简单地用定时器
Timer1.Interval:=1;
Timer1.Enabled:=True;
end;

procedure TDataGetter.Timer1Timer(Sender:TObject);
begin
webbrowser1.Navigate(inttostr(i)+'.htm');
end;
haianzhangbin 2003-10-20
  • 打赏
  • 举报
回复
在While中加入i := i + 1怎么样呢?

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧