if clientsocket1.Active=true then
    clientsocket1.Active:=false;
  with clientsocket1 do
  begin
    host:='192.168.1.110';
    port:=1045;
    active:=true;
    socket.SendText('654');
  end;
如上程序,为什么active最后还是false?

解决方案 »

  1.   

    你不要用with,放外面来试试看
      

  2.   

    你是用的非阻塞方式吧?
    clientsocket1.Active:=true;这儿并不是设置一个变量的值.
    实际是调用    clientsocket1.SetActive....
    要等到clientsocket 连接成功,Active才会变为TRUE大致可以按下面这样写.
    ....
        active:=true;
        while not active do
          Application.processMessages;//循环体里你可以加上超时判断退出循环.
        socket.SendText('654');
    .....