这是我在网上下载的,本以为是一个控件,但是装不上。麻烦帮看下是不是控件,要怎么才能判断是不是控件呢?源代码如下:
{*******************************************************}
{                                                       }
{           ZeroMQ adapter for Embarcadero Delphi       }
{                                                       }
{           Copyright (c) 2009-2009 Daniele Teti        }
{                                                       }
{                                                       }
{           WebSite: www.danieleteti.it                 }
{           email:[email protected]                     }
{           VERSION: 1.0                                }
{*******************************************************}
unit ZeroMQ;interfaceuses
  ZMQ, SysUtils;type
  TZeroMQScope = (
    zmqScopeLocal = 1,
    zmqScopeProcess = 2,
    zmqScopeGlobal = 3
    );
  TZeroMQStyle = (zmqStyleDataDistribution = 1, zmqStyleLoadBalancing = 2);
  TZeroExchange = Integer;
  TZeroQueueID = Cardinal;
  TZeroBlockingMode = (zmqBlocking = 1, zmqNoBlocking = 0);
  EZeroMQException = class(Exception)
  end;
  TZeroMQ = class(TInterfacedObject)  protected
    FConnection: Pointer;
    FHost: AnsiString;
  public
    procedure Open(const Host: AnsiString);
    procedure Close;
    function CreateExchange(
      Exchange: ansistring;
      Scope: TZeroMQScope;
      Location: ansistring;
      Style: TZeroMQStyle): Integer;
    function CreateQueue(
      QueueName: ansistring;
      Scope: TZeroMQScope;
      Location: ansistring = ''): Integer;
    function CreateLocalExchange(Exchange: ansistring;
      Style: TZeroMQStyle): Integer;
    function CreateLocalQueue(QueueName: ansistring): Integer;
    procedure Bind(ExchangeName: ansistring;
                  QueueName: ansistring;
                  ExchangeOptions: ansistring = '';
                  QueueOptions: ansistring = '');
    function Send(Exchange: Integer;
                  Message: AnsiString;
                  Blocking: TZeroBlockingMode = zmqBlocking): Integer;
    function Receive(var Message: AnsiString;
                     var MessageType: Cardinal;
                     var MessageSize: Int64;
                     Blocking: TZeroBlockingMode = zmqBlocking): TZeroQueueID;
  end;
const
  ALL_INTERFACES = '*';implementationconst
  ZMQ_NO_LIMIT = -1;
const
  ZMQ_NO_SWAP = 0;{ TZeroMQ }procedure TZeroMQ.Bind(ExchangeName: ansistring; QueueName: AnsiString;
                       ExchangeOptions: ansistring = ''; QueueOptions: ansistring = '');
begin
  zmq_bind(FConnection, PAnsiChar(ExchangeName), PAnsiChar(QueueName), PAnsiChar(ExchangeOptions), PAnsiChar(QueueOptions))
end;procedure TZeroMQ.Close;
begin
  zmq_free(FConnection);
  FConnection := nil;
end;function TZeroMQ.CreateExchange(Exchange: ansistring; Scope: TZeroMQScope;
  Location: ansistring; Style: TZeroMQStyle): Integer;
begin
  Result := zmq_create_exchange(
    FConnection, PAnsiChar(Exchange), Integer(Scope), PAnsiChar(Location), Integer(Style));
end;function TZeroMQ.CreateLocalExchange(Exchange: ansistring; Style: TZeroMQStyle): Integer;
begin
  Result := zmq_create_exchange(
    FConnection, PAnsiChar(Exchange), Integer(zmqScopeLocal), PAnsiChar(''), Integer(Style));
end;
function TZeroMQ.CreateLocalQueue(QueueName: ansistring): Integer;
begin
  Result := CreateQueue(QueueName, zmqScopeLocal,'');
end;function TZeroMQ.CreateQueue(QueueName: ansistring; Scope: TZeroMQScope;
  Location: ansistring = ''): Integer;
begin
  Result := zmq_create_queue(FConnection, PAnsiChar(QueueName), Integer(Scope), PAnsiChar(Location), ZMQ_NO_LIMIT, ZMQ_NO_LIMIT, ZMQ_NO_SWAP);
end;procedure TZeroMQ.Open(const Host: AnsiString);
begin
  FConnection := nil;
  FConnection := zmq_create(PAnsiChar(FHost));
  if FConnection = nil then
    raise EZeroMQException.Create('Cannot connect to ZeroMQ server');
end;function TZeroMQ.Receive(var Message: AnsiString; var MessageType: Cardinal; var MessageSize: Int64; Blocking: TZeroBlockingMode = zmqBlocking): TZeroQueueID;
var
  res: Int64;
  data: PAnsiChar;
begin
  Message := '';
  data := nil;
  MessageSize := 0;
  res := zmq_receive(FConnection, data, MessageSize, MessageType, Integer(Blocking));
  if (res > 0) and (MessageSize > 0) then
    Message := data;
  zmq_free(data);
  Result := res;
end;function TZeroMQ.Send(Exchange: Integer; Message: AnsiString;
  Blocking: TZeroBlockingMode = zmqBlocking): Integer;
var
  data_size: Int64;
begin
  data_size := length(Message);
  Result := zmq_send(
    FConnection,
    Exchange,
    PAnsiChar(Message + #0),
    data_size + SizeOf(ansichar),
    Integer(Blocking)
    );
end;end.

解决方案 »

  1.   

    这就是一个类(TZeroMQ)的实现单元,直接use就能用了
      

  2.   

    樓上正解,正是TZeroMQ的單元,直接在use中加入即可
      

  3.   

    不是控件啊?那请问怎么判断.pas文件是不是控件呢?刚准备学习控件,当扫盲哈?谢了
      

  4.   

    祖先类是TWinControl的,就是控件啦
      

  5.   

    有类似
    procedure Register;
    begin
         RegisterComponents('SpComm', [TComm])
    end;的控件注册