TObjectList<T>、TObjectQueue<T>、TObjectStack<T> 分别继承自:
TList<T>、TQueue<T>、TStack<T>;

它们是专门用于对象的列表, 都增加了一个 OwnsObjects 布尔属性, 决定对象会不会自动释放(这也通过 Create 的参数来决定)

其他基本同它们的父类, 仅给 TObjectList<T> 测试一例(至此泛型相关内容学习完毕):

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Generics.Collections;

procedure TForm1.Button1Click(Sender: TObject);
const
  w = 100; h = 20;
var
  ObjList: TObjectList<TEdit>;
  Edit: TEdit;
  i: Integer;
begin
  ObjList := TObjectList<TEdit>.Create();
  //ObjList := TObjectList<TEdit>.Create(False); {如果这样建立, 对象退出列表是则不会自动释放}
  
  Randomize;
  for i := 0 to 5 do {建立 6 个 Edit, 并加入列表}
  begin
    Edit := TEdit.Create(Self);
    Edit.Parent := Self;
    Edit.SetBounds(Random(ClientWidth-w), Random(ClientHeight-h), w, h);
    ObjList.Add(Edit);
  end;

{2 秒钟后删除一个}
  Sleep(2000);
  ObjList.Delete(0);

{2 秒钟后提取一个, 让被提取的变红; 提取的对象不会被自动释放的}
  Sleep(2000);
  Edit := ObjList.Extract(ObjList[0]);
  Edit.Color := clRed;
  Edit.Repaint;

//ObjList.OwnsObjects := False; {如果这样, 对象退出列表是也不会自动释放}

{2 秒钟后销毁列表; 列表中的对象也会随之释放}
  Sleep(2000);
  ObjList.Free;
end;

end.

转载于:https://www.cnblogs.com/jxgxy/archive/2009/11/11/1600938.html

三十、详测 Generics Collections: TObjectList、TObjectQueue、TObjectStack相关推荐

  1. 详测 Generics Collections TList (6): Reverse、TrimExcess

    为什么80%的码农都做不了架构师?>>>    unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Clas ...

  2. 详测 Generics Collections TQueue (3): OnNotify、Extract

    为什么80%的码农都做不了架构师?>>>    unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Clas ...

  3. 详测 Generics Collections TStack(1): Push、Pop、Peek - 其他功能同 TQueue

    为什么80%的码农都做不了架构师?>>>    unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Clas ...

  4. 【bzoj 十连测】[noip2016十连测第三场]Problem C: 序列(静态主席树)

    Problem C: [noip2016十连测第三场]序列 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 78  Solved: 32 [Submi ...

  5. 【正点原子Linux连载】第三十五章 Linux内核顶层Makefile详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  6. [Python从零到壹] 三十六.图像处理基础篇之图像算术与逻辑运算详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  7. 36.深度解密三十六:网络舆情监测之另类“免费监测”方法详解

    网络营销推广技术.技巧深度解密(三十六)指南: 1.本文档适合零基础以及互联网营销推广工作者,主要讲解免费网络舆情监测的问题. 2.原创版权文档,任何抄袭或者全部.部分模仿都是侵权行为. 3.敬畏法律 ...

  8. 【正点原子Linux连载】第三十二章 U-Boot启动流程详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  9. 32.深度解密三十二:详解影响QQ群整体排名的那些秘密

    网络营销推广技术.技巧深度解密(三十二)指南: 1.本文档适合零基础以及互联网营销推广人员,主要讲解营销QQ群排名的一些问题. 2.原创版权文档,任何抄袭或者全部.部分模仿都是侵权行为. 3.敬畏法律 ...

最新文章

  1. Github 简明教程
  2. 6年Java程序员年薪60W,这些年我都爬过哪些坑(2021年终总结)
  3. Android开发者指南(4) —— Application Fundamentals(二)
  4. 预见2021-罗兰贝格中国行业趋势报告
  5. python列表功能默写_python基础学习——列表list的功能
  6. torch.ones,normal,max
  7. 安装debian文件管理器
  8. Oracle数据库管理之创建和删除数据库
  9. AD教程系列 | 0-认识Altium Designer:汉化和新建项目
  10. STM32F103 flash地址与数据存入时高低位的关系
  11. 液相色谱柱PHP,浅谈液相色谱柱现代史
  12. myeclipse注册机 unable access tojarfile cracker 2018jar
  13. 熔断机制什么意思_[财经]熔断机制的由来介绍 熔断机制什么意思 - 南方财富网...
  14. 数据湖架构Hudi(五)Hudi集成Flink案例详解
  15. 别人笑我太疯癫,我笑别人看不穿
  16. zjs-my-diary-20200609
  17. 以流量为主导的发展方式,注定了直播带货无法逃脱电商的宿命
  18. c语言的%的转义吗,%20转义(C语言转义字符问题)
  19. 2020年基因组识别行业研究报告 附下载
  20. knockout js之select

热门文章

  1. matlab padarray函数零,matlab padarray函数
  2. Golang——死锁、互斥锁、读写锁的实现
  3. android安装python opencv_Python、C++、Android OpenCV 开发环境的配置
  4. matlab中noisbloc,基于小波变换的微弱信号检测技术的研究.doc
  5. java textfield赋值_Java中怎么把运行结果显示到textfield中
  6. Linux修改hostname的几种方式,及遇到的问题
  7. java获取远程网络图片文件流、压缩保存到本地
  8. 互联网晚报 | 2月12日 星期六 | 宝马控股华晨宝马落锤;知乎否认视频部门裁员;《老友记》全十季高清版全网首播...
  9. 互联网晚报 | 11月26日 星期五 | 饿了么成立蓝骑士智囊团;淘特上线“官方补贴日”;上海数据交易所揭牌成立...
  10. 周鸿祎:打工是用老板的钱给自己交学费,在公司混日子是浪费生命?