library K2; uses
  SysUtils,
  ScktComp,
  Dialogs,
 Classes; typeTClient = class(TClientSocket)
          public              procedure readdata(Sender: TObject; Socket: TCustomWinSocket);
              procedure tcpconnected(Sender: TObject; Socket: TCustomWinSocket);
              procedure tcpdisconnected(Sender: TObject; Socket: TCustomWinSocket);
              procedure tcperror(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
            end;
            var
ClientSocket1 :   TClient;
tcpclent:   TClient;
{$R *.res}
begin
ClientSocket1 := TClient.create(nil);
 ClientSocket1.ClientType := ctNonBlocking;
 ClientSocket1.Address:='127.0.0.1';
 ClientSocket1.port:=2058;
 ClientSocket1.onread:= tcpclent.readdata; ClientSocket1.OnConnect:=tcpclent.tcpconnected;
 ClientSocket1.ondisconnect:=tcpclent.tcpdisconnected;
 ClientSocket1.onerror:=tcpclent.tcperror; //ClientSocket1.Active:= false;
 ClientSocket1.Active:= true;
 // if ClientSocket1.Active then
 //   else
  //  begin
   // showmessage('无法连接服务器!');
   // ClientSocket1.close();
   // ClientSocket1.free;
   // end;end.

解决方案 »

  1.   

    [Error] Project2.dpr(18): Unsatisfied forward or external declaration: 'TClient.readdata'
    [Error] Project2.dpr(19): Unsatisfied forward or external declaration: 'TClient.tcpconnected'
    [Error] Project2.dpr(20): Unsatisfied forward or external declaration: 'TClient.tcpdisconnected'
    [Error] Project2.dpr(21): Unsatisfied forward or external declaration: 'TClient.tcperror'
     望大虾指点
      

  2.   

    这个自定义类写的不好,也没有封闭,如果仅仅要实现连接这些功能,直接代码就够了
    unit Client;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ToolWin, ComCtrls, ScktComp, ExtCtrls;type
      TClientForm = class(TForm)
        ClientSocket: TClientSocket;
        Btn_Connect: TButton;
        StatusBar: TStatusBar;
        ToolBar1: TToolBar;
        Btn_Send: TButton;
        Btn_DisConnect: TButton;
        Bevel1: TBevel;
        Bevel2: TBevel;
        Edit1: TEdit;
        Edit2: TEdit;
        Label3: TLabel;
        Label4: TLabel;
        Edit3: TEdit;
        Edit4: TEdit;
        Label5: TLabel;
        Label6: TLabel;
        Edit6: TEdit;
        Label7: TLabel;
        Label8: TLabel;
        Memo1: TMemo;
        Edt_Send: TEdit;
        Label9: TLabel;
        procedure Btn_ConnectClick(Sender: TObject);
        procedure Btn_DisConnectClick(Sender: TObject);
        procedure Btn_SendClick(Sender: TObject);
        procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
        procedure ClientSocketConnect(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure ClientSocketConnecting(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure ClientSocketDisconnect(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure ClientSocketError(Sender: TObject; Socket: TCustomWinSocket;
          ErrorEvent: TErrorEvent; var ErrorCode: Integer);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      ClientForm: TClientForm;implementation{$R *.dfm}//连接
    procedure TClientForm.Btn_ConnectClick(Sender: TObject);
    begin
      ClientSocket.Host := Edt_Host.Text;
      ClientSocket.Port := StrToInt(Edt_Port.Text);
      ClientSocket.Open;
    end;//断开
    procedure TClientForm.Btn_DisConnectClick(Sender: TObject);
    begin
      ClientSocket.Close;
    end;//发送
    procedure TClientForm.Btn_SendClick(Sender: TObject);
    begin
      ClientSocket.Socket.SendText(Edt_Send.Text);
    end;//读取到报文时
    procedure TClientForm.ClientSocketRead(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      Memo1.Lines.Add(Socket.ReceiveText);
    end;//连接成功时
    procedure TClientForm.ClientSocketConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      Btn_Send.Enabled := True;
      Btn_Disconnect.Enabled :=True;
      StatusBar.Panels[0].Text := '已经连接到 '+ Socket.RemoteHost;
    end;//连接时
    procedure TClientForm.ClientSocketConnecting(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      StatusBar.Panels[0].Text := '正在连接到服务器... ';
    end;//断开时
    procedure TClientForm.ClientSocketDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      Btn_Send.Enabled := False;
      Btn_Disconnect.Enabled := False;
      StatusBar.Panels[0].Text := '已经断开与 '+ Socket.RemoteHost +' 的连接';
    end;procedure TClientForm.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
     ClientSocket.Close;
    end;//发生错误
    procedure TClientForm.ClientSocketError(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
    begin
      StatusBar.Panels[0].Text := '与服务器端的连接发生错误';
      ErrorCode := 0;
    end;end.
      

  3.   

    在类TClient处按CTRL+ ALT +C