zoukankan      html  css  js  c++  java
  • 详测 Generics Collections TQueue (3): OnNotify、Extract

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Generics.Collections;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        procedure MyQueueNotify(Sender: TObject; const Item: Integer;
          Action: TCollectionNotification);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    //uses Generics.Collections;
    
    {准备给 TQueue.OnNotify 调用的事件过程}
    procedure TForm1.MyQueueNotify(Sender: TObject; const Item: Integer;
      Action: TCollectionNotification);
    begin
      case Action of
        cnAdded     : ShowMessageFmt('Add: %d', [Item]);
        cnRemoved   : ShowMessageFmt('Remove: %d', [Item]);
        cnExtracted : ShowMessageFmt('Extract: %d', [Item]);
      end;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Queue: TQueue<Integer>;
    begin
      Queue := TQueue<Integer>.Create();
      Queue.OnNotify := MyQueueNotify;
    
      Queue.Enqueue(11); {Add: 11}
      Queue.Enqueue(22); {Add: 22}
      Queue.Enqueue(33); {Add: 33}
    
      Queue.Dequeue;     {Remove: 11}
    
      // Extract 和 Dequeue 功能一致, 区别只是在驱动 OnNotify 事件时传递的参数有区别, 没多大意义
      Queue.Extract;     {Extract: 22}
    
      //Queue.OnNotify := nil;
    
      Queue.Free;        {Remove: 33}
    end;
    
    end.
    
  • 相关阅读:
    Windows:生成环境Word,PPT,EXCEL com+组件配置
    Win10 计算机管理 打不开应急办法
    Js:弹窗剧中
    Asp.net跨域配置
    Centos6系列安装nginx
    Win_oracle_exp/expdp备份
    MSSQL:查看某个账号使用得数据库
    MSSQL:查看作业情况
    MSSQL:账号无法删除方案
    MSSQL:删除系统作业计划
  • 原文地址:https://www.cnblogs.com/del/p/1580881.html
Copyright © 2011-2022 走看看