unit UntTBaseSocketClient;
interface
uses SysUtils, IdTCPConnection, IdSocks, idstack,IdTCPClient;
type
  Pint = ^integer;
  TBaseSocketClient = class
  protected
    procedure OnCreate; dynamic;
    procedure OnDestory; dynamic;
  public
    ExeGIDStack: TIdStack;
    Client: TIdTCPClient;
    function GetHead: Integer; //读取报头
    procedure SendHead(ICmd: Integer); //发送报头
    procedure SendObject(IObj: TObject); //发送对象
    procedure GetObject(IObj: TObject; IClass: TClass); overload;
    //接收对象 自己根据类之类来创建对象
    procedure GetObject(IObj: TObject); overload; //由外部代入已经创建好的对象
    procedure SendZipFile(IFileName: string); //发送压缩文件
    procedure GetZipFile(IFileName: string); //接收压缩文件
    constructor Create(IHost: string = '127.0.0.1'; IPort: Integer = 0); overload;
    constructor Create(const ProxyHost: string; ProxyPort: Integer;
      ProxyUser, ProxyPassword: string); overload;
    destructor Destroy; override;
  end;implementationuses Classes, untfunctions;{ TBaseSocketClient }constructor TBaseSocketClient.Create(IHost: string = '127.0.0.1'; IPort:
  Integer = 0);
begin
  Client := TIdTCPClient.Create(Client);
  Client.Host := IHost;
  Client.Port := IPort;
  if (ExeGIDStack <> nil) and (GStack = nil) then
    ExeGIDStack := GStack;
  OnCreate;
end;destructor TBaseSocketClient.Destroy;
begin
  try
    OnDestory;
    if Client.Connected then
      Client.Disconnect;
    Client.Free;
    Client := nil;
  except
  end;
  inherited;
end;function TBaseSocketClient.GetHead: Integer;
begin
  Result := Client.ReadInteger;
//[DCC Error] UntTBaseSocketClient.pas(61): E2003 Undeclared identifier: 'ReadInteger'
end;……d2007