组件在:Internet下的TcpClient构件. TcpClient 貌似没有超时属性.所以我定义了个时钟. 代码:   单元二: 
Procedure checkroot;
var
kaiqi:integer;
begin
for kaiqi:=1 to 255 do
begin
      sleep(100);
      form1.Timer1.Enabled:=true;
      form1.Client.RemoteHost:='192.168.1.'+inttostr(kaiqi); 扫描192.168.1.1 - 192.168.1.255
      zjip:='192.168.1.'+inttostr(kaiqi);
      form1.Client.Active:=False;
      form1.Client.remotePort:='80';
      form1.Client.Active:=TRUE;
      if form1.Client.Connected <> false then
      begin
      form1.ListBox1.Items.Add(zjip);
      form1.Timer1.Enabled:=false;
      end
      else form1.Timer1.Enabled:=false;
end;
end; 单元一: 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
continue; // 就是这句,怎么跳出单元二的for循环?
end;问下各位,如果TcpClient有什么关于超时的方法吗?   或者帮我解决上面一个问题就行了. 
希望能附带代码.或者大家有其他可以快速扫描端口的控件能介绍下方法的也行,但是一定要能设置超时啊..这个问题问了好多天了.

解决方案 »

  1.   

    加一个boolean类型的变量,然后在for中进行while循环当你的变量为true时退出for循环
      

  2.   

    楼上的是一种做法,也就是Thread的做法。也可以raise个Exception(可用Abort),然后在单元2里的except部分屏蔽掉退出循环。
      

  3.   

    开线程来做发现现在delphi开发人员慢慢下降了....
      

  4.   

    昏 我单元二就是开线程啊..> 不然就可以跳过循环了.我试过用while 貌似不行. .能贴出代码吗?白天在睡觉,刚起床,解决马上结贴.