var
  Form1: TForm1;
  myconnect:Boolean;
implementation{$R *.dfm}procedure TForm1.BitBtn1Click(Sender: TObject);
var
  ip,port:string;
begin
  memo1.Clear;
  ADODataSet1.Close;
  ADODataSet1.Open;
  ADODataSet1.First;
  while not (ADODataSet1.Eof) do
  begin
    ip:=ADODataSet1.fieldbyname('ip').Value; //IP地址
    port:=ADODataSet1.fieldbyname('port').Value;  //端口号
    IdTelnet1.Disconnect; //断开连接
    myconnect:=False;  //初始化
    IdTelnet1.ConnectTimeout:=3000; //设置连接超时的时间
    IdTelnet1.Host:=ip;  //把IP赋值给控件
    IdTelnet1.Port:=strtoint(port); //把端口赋值给控件
  try
    IdTelnet1.Connect;//进行连接
  except
  end;
    if myconnect=True then
    begin
       memo1.Lines.Add(ADODataSet1.fieldbyname('SeverName').Value+'    成功');
       ADODataSet1.Edit;
       ADODataSet1.FieldByName('contime').Value:=now;
       ADODataSet1.FieldByName('state').Value:='连接';
       ADODataSet1.Post;
    end  else
       begin
         Memo1.Lines.Add(ADODataSet1.fieldbyname('SeverName').value+'    超时') ;
         ADODataSet1.Edit;
         ADODataSet1.FieldByName('state').value:='超时';
         ADODataSet1.Post;
       end;
  ADODataSet1.Next;
  end;   
end;procedure TForm1.IdTelnet1Connect(Sender: TObject);
begin
  myconnect:=True;
end;以上代码运行一次,memo1的内容都是连接,运行多次之后,诸如 10次 那么就是超时。
我能确定的是:所有IP和端口都是开放的,就是不明白,执行一次与多次 为啥得到的结果不同?
调试发现,执行多次之后  ADODataSet1.Eof=true adodataset1的结果集直接到最后了。为啥呢?
adodataset1.commandtext:='select *  from Telnet ';