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.
    
  • 相关阅读:
    java 8
    内存溢出VS内存泄漏
    dubbo zk 分布式服务项目搭建与配置
    转发 VS 重定向
    过滤器
    Synchronized
    java 泛型
    spring 整合 mongo
    泛型
    反虚拟机
  • 原文地址:https://www.cnblogs.com/del/p/1580881.html
Copyright © 2011-2022 走看看