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.
  • 相关阅读:
    Oracle左连接、右连接、全外连接以及(+)号用法
    linux中游戏好玩
    python之allure报告
    UI自动化之元素定位(xpath、css)
    expected_conditions模块提供了判断页面元素的16种方法
    安全测试1_Web知识简介
    零基础学习python_easygui(35课)
    jmeter通过if控制器控制业务比例
    系统异常设计
    kafka 消息队列
  • 原文地址:https://www.cnblogs.com/jxgxy/p/1596684.html
Copyright © 2011-2022 走看看