代码之家  ›  专栏  ›  技术社区  ›  user1937012

泛型使用记录排队,直接将记录排队

  •  1
  • user1937012  · 技术社区  · 4 年前

    私人部门 :

    type
      TWorkOwner = (woClient,woServer);
    
      TWorkData = record
        Owner : TWorkOwner;
        AMessage : string;
        MsgID : integer;
      end;
    
      WorkFlow : TQueue<TWorkData>;
      WorkData : TWorkData;
    

    然后,我希望将WorkData类型的项目添加到此队列,如下所示:

      WorkData.Owner:=woClient;
      WorkData.AMessage:='LogOn';
      WorkData.MsgID:=MsgID;
    
      WorkFlow.Enqueue(WorkData);
    

    WorkFlow.Enqueue(woClient,'LogOn',MsgID);
    

    这显然不起作用,我尝试了几种不同的方法,但如果可能的话,我不知道如何设置。

    非常感谢。

    2 回复  |  直到 4 年前
        1
  •  1
  •   Miroslav Penchev    4 年前

    您可以定义记录的构造函数,如下所示:

    constructor Create(AOwner: TWorkOwner; AMessage: string; AMsgID: integer);
    

    然后 Enqueue 它是这样的:

    WorkFlow.Enqueue(TWorkData.Create(woClient,'LogOn',MsgID));
    

        2
  •  1
  •   Uwe Raabe    4 年前

    最简单的方法是向记录中添加一个构造函数,该构造函数接受以下参数:

    type
      TWorkData = record
        Owner: TWorkOwner;
        AMessage: string;
        MsgID: integer;
      public
        constructor Create(AOwner: TWorkOwner; const AAMessage: string; AMsgID:
            integer);
      end;
    
    constructor TWorkData.Create(AOwner: TWorkOwner; const AAMessage: string;
        AMsgID: integer);
    begin
      Owner := AOwner;
      AMessage := AAMessage;
      MsgID := AMsgID;
    end;
    
    WorkFlow.Enqueue(TWorkData.Create(woClient,'LogOn',MsgID));