这段代码,在开始只要给ClientSocket1设置属性后就不能捕获错误信息,showmessage就不能显示出来                         ClientSocket1.Address:='192.168.0.142';
                       ClientSocket1.Port:=5000;
                       try                           ClientSocket1.Active:=true;
                         except
                         showmessage('连接失败');
                         end;只要不给ClientSocket1设置属性,就可以正常显示showmessage
                      //   ClientSocket1.Address:='192.168.0.142';
                    //   ClientSocket1.Port:=5000;
                       try                           ClientSocket1.Active:=true;
                         except
                         showmessage('连接失败');
                         end;但我必须要给ClientSocket1设置属性啊,请问怎么办?太怪异了

解决方案 »

  1.   

    在ClientSocket的OnError事件中去捕获。不给ClientSocket1设置属性时,Active:=true时会立刻抛出异常,你的try..except..end能捕获到。
    设置了属性后,如果属性没有问题的话,异常要在OnError事件中去捕获。
      

  2.   

    这个是阻塞和非阻塞的问题吧,强..设 ClientType 为 nonBlocking 的要到 OnError 事件中去取错误码,因为这个错误是一个消息发出的
    Blocking 的就可以用 try..except 取得所有错误default 是非阻塞的socket
      

  3.   

    try
      ClientSocket1.Active := True 
    finally
      if ClientSocket1.Active then 
        连接成功
    end;
      

  4.   

    根据你的情况:
    是不是设置属性前ClientSocket1已经处理激活的状态?