三十、详测 Generics Collections: TObjectList、TObjectQueue、TObjectStack
TObjectList<T>、TObjectQueue<T>、TObjectStack<T> 分别继承自:
TList<T>、TQueue<T>、TStack<T>;
它们是专门用于对象的列表, 都增加了一个 OwnsObjects 布尔属性, 决定对象会不会自动释放(这也通过 Create 的参数来决定)
其他基本同它们的父类, 仅给 TObjectList<T> 测试一例(至此泛型相关内容学习完毕):
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相关推荐
- 详测 Generics Collections TList (6): Reverse、TrimExcess
为什么80%的码农都做不了架构师?>>> unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Clas ...
- 详测 Generics Collections TQueue (3): OnNotify、Extract
为什么80%的码农都做不了架构师?>>> unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Clas ...
- 详测 Generics Collections TStack(1): Push、Pop、Peek - 其他功能同 TQueue
为什么80%的码农都做不了架构师?>>> unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Clas ...
- 【bzoj 十连测】[noip2016十连测第三场]Problem C: 序列(静态主席树)
Problem C: [noip2016十连测第三场]序列 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 78 Solved: 32 [Submi ...
- 【正点原子Linux连载】第三十五章 Linux内核顶层Makefile详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- [Python从零到壹] 三十六.图像处理基础篇之图像算术与逻辑运算详解
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- 36.深度解密三十六:网络舆情监测之另类“免费监测”方法详解
网络营销推广技术.技巧深度解密(三十六)指南: 1.本文档适合零基础以及互联网营销推广工作者,主要讲解免费网络舆情监测的问题. 2.原创版权文档,任何抄袭或者全部.部分模仿都是侵权行为. 3.敬畏法律 ...
- 【正点原子Linux连载】第三十二章 U-Boot启动流程详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- 32.深度解密三十二:详解影响QQ群整体排名的那些秘密
网络营销推广技术.技巧深度解密(三十二)指南: 1.本文档适合零基础以及互联网营销推广人员,主要讲解营销QQ群排名的一些问题. 2.原创版权文档,任何抄袭或者全部.部分模仿都是侵权行为. 3.敬畏法律 ...
最新文章
- Github 简明教程
- 6年Java程序员年薪60W,这些年我都爬过哪些坑(2021年终总结)
- Android开发者指南(4) —— Application Fundamentals(二)
- 预见2021-罗兰贝格中国行业趋势报告
- python列表功能默写_python基础学习——列表list的功能
- torch.ones,normal,max
- 安装debian文件管理器
- Oracle数据库管理之创建和删除数据库
- AD教程系列 | 0-认识Altium Designer:汉化和新建项目
- STM32F103 flash地址与数据存入时高低位的关系
- 液相色谱柱PHP,浅谈液相色谱柱现代史
- myeclipse注册机 unable access tojarfile cracker 2018jar
- 熔断机制什么意思_[财经]熔断机制的由来介绍 熔断机制什么意思 - 南方财富网...
- 数据湖架构Hudi(五)Hudi集成Flink案例详解
- 别人笑我太疯癫,我笑别人看不穿
- zjs-my-diary-20200609
- 以流量为主导的发展方式,注定了直播带货无法逃脱电商的宿命
- c语言的%的转义吗,%20转义(C语言转义字符问题)
- 2020年基因组识别行业研究报告 附下载
- knockout js之select
热门文章
- matlab padarray函数零,matlab padarray函数
- Golang——死锁、互斥锁、读写锁的实现
- android安装python opencv_Python、C++、Android OpenCV 开发环境的配置
- matlab中noisbloc,基于小波变换的微弱信号检测技术的研究.doc
- java textfield赋值_Java中怎么把运行结果显示到textfield中
- Linux修改hostname的几种方式,及遇到的问题
- java获取远程网络图片文件流、压缩保存到本地
- 互联网晚报 | 2月12日 星期六 | 宝马控股华晨宝马落锤;知乎否认视频部门裁员;《老友记》全十季高清版全网首播...
- 互联网晚报 | 11月26日 星期五 | 饿了么成立蓝骑士智囊团;淘特上线“官方补贴日”;上海数据交易所揭牌成立...
- 周鸿祎:打工是用老板的钱给自己交学费,在公司混日子是浪费生命?