直接调用控件的事件
procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;ABinding: TIdSocketHandle);
怎么老是报错:TIdSocketHandle 没有定义.不知道是不是有哪个单元没用调用吗

解决方案 »

  1.   

    是可以的,查找 IdSocketHandle.pas 文件的位置,加到你的项目的查找路径就可,
    在菜单 project - options - directoryieds/conditional 下的
    search pathprocedure TUDPMainForm.UDPServerUDPRead(Sender: TObject; AData: TBytes;
      ABinding: TIdSocketHandle);
    var
      //DataStringStream: TStringStream;
      s: string; //i: integer;
    begin
      if Length(AData) = 0 then
      begin
        s := 'not data';
      end else begin
        s := BytesToString(AData, 0, MaxInt);
      end;
      IpAddr := ABinding.PeerIP;
      lblIP.Caption := IpAddr;
      IpPort := IntToStr(ABinding.PeerPort);
      lblPort.Caption := IpPort;
      UDPMemo.Lines.Add(s + '" from ' + IpAddr + ' on port ' + IpPort);
      

  2.   

    Error:Undeclared identifier TIdSocketHandle
      

  3.   

    uses IdSocketHandle  //楼主你没有UESE这个知道吗,把这个UESE就OK了顺便给你个例子
    uses IdSocketHandle  //这个应该知道放在哪吧procedure TForm1.Button8Click(Sender: TObject);
      var
        cmd:string;
    begin
       IdUDPClient1.Host := '192.168.0.255';//这个地方就是你要广播的网段
       IdUDPClient1.Port := 12345;
       IdUDPClient1.Active := True;
       cmd := '大家吃了吗?';
       IdUDPClient1.Send(cmd);
       cmd := IdUDPClient1.ReceiveString();
       ShowMessage(cmd);
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      IdUDPServer1.DefaultPort := 12345;
      IdUDPServer1.Active := true;
    end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);
      var
       cmd:string;
    begin
       AData.Seek(0,0);
       SetLength(cmd,AData.size);
       AData.Read(cmd[1],AData.Size);
       showmessage(cmd);
       cmd := '我吃了';
      ABinding.SendTo(ABinding.PeerIP,ABinding.PeerPort,cmd[1],length(cmd));
    end;
      

  4.   

    IdUDPClient1.Host := '192.168.0.255';//也可以是指定的地址