在一个unit文件中手工创建
UDPServer:=TIdUDPServer.Create(Nil);
但是UDPServer.OnUDPRead:=XXXXXXX(参数无误)报类型不对的错误(方法指针与过程)
于是把XXXXXXX写在了
Type
  MyControl=class(TComponent)
  public
    procedure XXXXXXX(...)
end;
可UDPServer.OnUDPRead:=MyControl.XXXXXXX报错类型不对(事件与过程)不过很久以前曾经用类似的方法搞定过,现在却不记得问题出在哪里了,还请大虾多多指教!

解决方案 »

  1.   

    procedure XXXXXXX(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
    如果参数无误,看看是不是少引用IdSocketHandle单元
      

  2.   

    uses IdSocketHandle肯定有的 不然就报不认识TIdSocketHandle的错了
    可是究竟是哪不对呢?
      

  3.   

    procedure XXXXXXX(Sender: TObject; AData: TStream;
          ABinding: TIdSocketHandle);
      

  4.   

    procedure TForm1.TntButton1Click(Sender: TObject);
    begin
      IdUDPServer1.OnUDPRead:=XXXXXXX;
    end;
      

  5.   

    我是要写在unit文件里的 所以没有Form的 敢问楼上大虾这样的话怎么处理呢?
    以下是unit的全部内容 烦劳各位高手指点迷津
    ===================================================
    unit uUDPServer;
    interface
    uses
      SysUtils,classes,
      IdUDPServer, IdSocketHandle;
    var
      UDPServer:TIdUDPServer;
    type
      MyControl=class(TComponent)
      public
        procedure XXXXXXX(Sender:TObject;AData:TStream;ABinding:TIdSocketHandle);
    end;implementation
    procedure MyControl.XXXXXXX(Sender:TObject;AData:TStream;ABinding:TIdSocketHandle);
    begin
    //
    end;initialization
    begin
      UDPServer:=TIdUDPServer.Create(Nil);
      UDPServer.OnUDPRead:=MyControl.XXXXXXX;
    end;end.
      

  6.   

    unit uUDPServer;
    interface
    uses
      SysUtils,classes,
      IdUDPServer, IdSocketHandle;
    var
      UDPServer:TIdUDPServer;
    type
      MyControl=class(TComponent)
      public
        procedure XXXXXXX(Sender:TObject;AData:TStream;ABinding:TIdSocketHandle);
    end;implementation
    procedure MyControl.XXXXXXX(Sender:TObject;AData:TStream;ABinding:TIdSocketHandle);
    begin
    //
    end;var
      MyCtrl: MyControl;
    initialization
    begin
      UDPServer:=TIdUDPServer.Create(Nil);
      MyCtrl:=MyControl.Create(nil);
      UDPServer.OnUDPRead:=MyCtrl.XXXXXXX;
    end;end.
      

  7.   

    或者:unit uUDPServer;
    interface
    uses
      SysUtils,classes,
      IdUDPServer, IdSocketHandle;
    var
      UDPServer:TIdUDPServer;
    type
      MyControl=class(TComponent)
      public
        class procedure XXXXXXX(Sender:TObject;AData:TStream;ABinding:TIdSocketHandle);
    end;implementation
    class procedure MyControl.XXXXXXX(Sender:TObject;AData:TStream;ABinding:TIdSocketHandle);
    begin
    //
    end;initialization
    begin
      UDPServer:=TIdUDPServer.Create(Nil);
      UDPServer.OnUDPRead:=MyControl.XXXXXXX;
    end;end.