三十、详测 Generics Collections: TObjectList、TObjectQueue、TObjectStack
生活随笔
收集整理的這篇文章主要介紹了
三十、详测 Generics Collections: TObjectList、TObjectQueue、TObjectStack
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
TObjectList<T>、TObjectQueue<T>、TObjectStack<T> 分別繼承自:
TList<T>、TQueue<T>、TStack<T>;
它們是專門用于對(duì)象的列表, 都增加了一個(gè) OwnsObjects 布爾屬性, 決定對(duì)象會(huì)不會(huì)自動(dòng)釋放(這也通過(guò) Create 的參數(shù)來(lái)決定)
其他基本同它們的父類, 僅給 TObjectList<T> 測(cè)試一例(至此泛型相關(guān)內(nèi)容學(xué)習(xí)完畢):
?
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);?{如果這樣建立,?對(duì)象退出列表是則不會(huì)自動(dòng)釋放}
??
??Randomize;
??for?i?:=?0?to?5?do?{建立?6?個(gè)?Edit,?并加入列表}
??begin
????Edit?:=?TEdit.Create(Self);
????Edit.Parent?:=?Self;
????Edit.SetBounds(Random(ClientWidth-w),?Random(ClientHeight-h),?w,?h);
????ObjList.Add(Edit);
??end;
??{2?秒鐘后刪除一個(gè)}
??Sleep(2000);
??ObjList.Delete(0);
??{2?秒鐘后提取一個(gè),?讓被提取的變紅;?提取的對(duì)象不會(huì)被自動(dòng)釋放的}
??Sleep(2000);
??Edit?:=?ObjList.Extract(ObjList[0]);
??Edit.Color?:=?clRed;
??Edit.Repaint;
??//ObjList.OwnsObjects?:=?False;?{如果這樣,?對(duì)象退出列表是也不會(huì)自動(dòng)釋放}
??{2?秒鐘后銷毀列表;?列表中的對(duì)象也會(huì)隨之釋放}
??Sleep(2000);
??ObjList.Free;
end;
end.
?
轉(zhuǎn)載于:https://www.cnblogs.com/jxgxy/archive/2009/11/11/1600938.html
總結(jié)
以上是生活随笔為你收集整理的三十、详测 Generics Collections: TObjectList、TObjectQueue、TObjectStack的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 简单实现分行输出的javascript代
- 下一篇: 程序员结婚晚回家怕出轨吗?老婆:不怕,老