文档章节

测试 TList

涂孟超
 涂孟超
发布于 2014/09/26 15:34
字数 650
阅读 1
收藏 0
点赞 0
评论 0
// Add、Count、Items[n]
var
  List: TList;                       {声明 List}
  frmRed: TForm;                     {用于测试的对象, 这里选择了窗体}
begin
  List := TList.Create;              {建立列表}

  frmRed := TForm.Create(nil);       {建立 frmRed}
  frmRed.Caption := 'Red';           {frmRed 标题}
  frmRed.Color := clRed;             {frmRed 颜色}

  List.Add(frmRed);                  {添加到列表}

  ShowMessage(IntToStr(List.Count)); {1; 列表元素总数}
  //TForm(List.Items[0]).ShowModal;  {调用对象}
  TForm(List[0]).ShowModal;          {调用对象, 比上一行的写法简洁, 但是一样的}

  frmRed.Free;
  List.Free;
end;

 
 
 
 
 

 

 

  
// Insert、Remove、Delete、Clear、First、Last var List: TList; frmRed,frmGreen,frmBlue: TForm; i: Integer; begin List := TList.Create; {建立两个窗体: 红色、绿色} frmRed := TForm.Create(nil); frmRed.Caption := 'Red'; frmRed.Color := clRed; frmGreen := TForm.Create(nil); frmGreen.Caption := 'Green'; frmGreen.Color := clGreen; {添加到 List} List.Add(frmRed); List.Add(frmGreen); {再建立一个蓝色窗体} frmBlue := TForm.Create(nil); frmBlue.Caption := 'Blue'; frmBlue.Color := clBlue; {插入到 List} List.Insert(0, frmBlue); ShowMessage(IntToStr(List.Count)); {3} TForm(List.First).ShowModal; {显示第一个: 蓝色窗体} TForm(List.Last).ShowModal; {显示最后一个: 绿色窗体} {看看红色窗体是第几个?} i := List.IndexOf(frmRed); ShowMessage(IntToStr(i)); {1; 是第二个} {从列表中删除 - 用对象指针} List.Remove(frmRed); ShowMessage(IntToStr(List.Count)); {2} frmRed.ShowModal; {frmRed 依然存在, 只是不在列表中了} {从列表中删除 - 用元素索引} List.Delete(0); frmBlue.ShowModal; {frmBlue 依然存在, 只是不在列表中了} {清空列表} List.Clear; frmRed.Free; frmGreen.Free; frmBlue.Free; List.Free; end;
// Capacity、Move、Exchange、Extract var List: TList; frmRed,frmGreen,frmBlue: TForm; p: Pointer; i: Integer; begin List := TList.Create; List.Capacity := 3; {让 List 准备好接受 3 个元素} {建立红、绿、蓝三个窗体, 并添加到 List} frmRed := TForm.Create(nil); frmRed.Caption := 'Red'; frmRed.Color := clRed; frmGreen := TForm.Create(nil); frmGreen.Caption := 'Green'; frmGreen.Color := clGreen; frmBlue := TForm.Create(nil); frmBlue.Caption := 'Blue'; frmBlue.Color := clBlue; List.Add(frmRed); List.Add(frmGreen); List.Add(frmBlue); {依次显示窗体标题} for i := 0 to List.Count - 1 do ShowMessage(TForm(List[i]).Caption); {将分别显示: Red Green Blue} {移动} List.Move(2,0); {把第 3 个转移到第 1 个} for i := 0 to List.Count - 1 do ShowMessage(TForm(List[i]).Caption); {将分别显示: Blue Red Green} {置换} List.Exchange(1,2); {把第 2 个与第 3 个交换} for i := 0 to List.Count - 1 do ShowMessage(TForm(List[i]).Caption); {将分别显示: Blue Green Red} {提取指针} p := List.Extract(frmGreen); ShowMessage(TForm(p).Caption); {Green} frmRed.Free; frmGreen.Free; frmBlue.Free; List.Free; end;
//定义排序函数 function MySort(p1, p2: Pointer): Integer; begin Result := AnsiStrComp(p1,p2); end; procedure TForm1.Button1Click(Sender: TObject); var List: TList; frmRed,frmGreen,frmBlue: TForm; i: Integer; begin List := TList.Create; {建立绿、红、蓝三个窗体, 并添加到 List} frmRed := TForm.Create(nil); frmRed.Caption := 'Red'; frmRed.Color := clRed; frmGreen := TForm.Create(nil); frmGreen.Caption := 'Green'; frmGreen.Color := clGreen; frmBlue := TForm.Create(nil); frmBlue.Caption := 'Blue'; frmBlue.Color := clBlue; List.Add(frmRed); List.Add(frmGreen); List.Add(frmBlue); {依次显示窗体标题} for i := 0 to List.Count - 1 do ShowMessage(TForm(List[i]).Caption); {将分别显示: Red Green Blue} {排序} List.Sort(MySort); for i := 0 to List.Count - 1 do ShowMessage(TForm(List[i]).Caption); {将分别显示: Blue Green Red} // FreeAndNil(frmBlue); // List.Pack; {这个没有测试成功! Pack 应该是清除所有已是 nil 的对象} {释放所有对象} for i := 0 to List.Count - 1 do TForm(List[i]).Free; List.Free; end;

本文转载自:http://www.cnblogs.com/del/archive/2007/12/29/1019566.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
list iterator not incrementable

在VC6中 list<T*> Tlist; list<T*>::iterator iter; iter=Tlist.end(); 再 iter++; 此时iter的游标位置和iter.begin()相等 但在VC6以后的版本中,比如VC2002,2005,2008中 list<T*> Tlist; li......

ryany ⋅ 2010/11/29 ⋅ 0

系统重装后基本环境配置

装好系统后要修改root密码:sudo passwd root 安装ssh: sudo apt-get install ssh 2.看代码: vimd: sudo apt-get install vim-gtk cscope: sudo apt-get install cscope ctags ctags: sudo......

hyb_100 ⋅ 2014/05/18 ⋅ 0

vim for php IDE 我的打造过程

vim是一个很强的神器,对于我只用到其中的一小部分内容,接下来是我打造 php IDE的全过程,希望有兄弟能指点我其中的不足,要学习的兄弟能跟我一起努力学习。 第一步:配_vimrc,配成自己喜欢...

路边拾草人 ⋅ 2011/04/16 ⋅ 21

FastJSON配合Redis存取处理map数据

伪代码如下:

Alexdevlin ⋅ 2017/07/26 ⋅ 0

新手搞不懂是哪里出来差错

import itchat import re import jieba import matplotlib.pyplot as plt from wordcloud import WordCloud import PIL.Image as Image itchat.login() friends = itchat.get_friends(update......

jackytheguo ⋅ 2017/05/14 ⋅ 0

深入解析windows XP/2003:查看进程树

在windows调试工具箱中使用tilist.exe的/t开关,显示进程树。 Microsoft Windows XP [版本 5.1.2600] (C) 版权所有 1985-2001 Microsoft Corp. C:/Program Files/Debugging Tools for Windo......

晨曦之光 ⋅ 2012/03/09 ⋅ 0

VIM编辑器支持Python开发环境(Vim+Ctags+Taglist)

在Linux下用VI编辑器进行Python开发,有必要对VI编辑器进行一些配置,使其具备以下特性: 1、加强的 Python 语法高亮显示; 2、对脚本、项目生成 ctag 序列; 3、在 vim 中显示 ctag 序列列表...

庄小寒 ⋅ 2014/02/26 ⋅ 0

vim taglist 解决ctags: unrecognized option '--format

本文是很久以前整理的。 将系统由fedora换为mint,使用原vim配置文件,使用taglist时候出现以下错误: Taglist: Failed to generate tags for ....(a file)ctags: unrecognized option '--for...

樂天 ⋅ 2014/01/14 ⋅ 0

[转]vim ctags使用方法

windows下很多人都使用source insight 编写和查看代码。linux下可以使用VIM,刚开始会觉得VIM像windows下的记事本,而如果使用得当,它并不比source insight 逊色。 在这里,我会尽我所能细致...

文艺小青年 ⋅ 2017/07/13 ⋅ 0

VIM配置记录

在vimrc文件中添加如下配置: set nocompatible set number filetype indent plugin on syntax enable syntax on colorscheme desert set tags=tags set autochdir set ruler set showcmd s......

whysln ⋅ 2014/01/10 ⋅ 6

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring表达式语言(SpEL)

1、SpEL引用 Spring EL在bean创建时执行其中的表达式。此外,所有的Spring表达式都可以通过XML或注解的方式实现。下面将使用Spring表达式语言(SpEL),注入字符串,整数,Bean到属性。 SpEL的...

霍淇滨 ⋅ 22分钟前 ⋅ 0

Gradle使用阿里云镜像

gradle 生命周期中有一个初始化( Initialization )的过程,这个过程运行在 build script 之前,我们可以在这个地方做一点系统全局的设置,如配置仓库地址。 你可以在以下几个位置实现仓库地址...

明MikeWoo ⋅ 30分钟前 ⋅ 0

appium+python3.6

1.安装jdk1.8(不知道为啥只识别1.8,1.10不识别,所以为了少折腾,迁就安装1.8) http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 配置 JAVA_HOME:...

Kampfer ⋅ 49分钟前 ⋅ 0

详解Apache 日志分割教程

一、日志切割 安装cronolog CentOS 5.3中编译安装Apache日志默认是不切割的,需要用用工具Cronnolog进行日志切割。 1.下载及安装 wget http://cronolog.org/download/cronolog-1.6.2.tar.gz ...

dragon_tech ⋅ 51分钟前 ⋅ 0

Keepalived介绍

负载均衡器(Load Balancer, LB )是一组能够将IP数据流以负载均衡形式转发到多台物理服务器的集成软件。有硬件负载均衡器和软件负载均衡器之分,硬件负载均衡器主要是在访问网络和服务器之间...

寰宇01 ⋅ 51分钟前 ⋅ 0

java8-Collections and Streams

stream和集合的区别是什么? 1.在计算的时候处理不同, 2.every element should be computed in the memory and then to be part of collections stream Stream apis filter with a predica......

writeademo ⋅ 57分钟前 ⋅ 0

Confluence 6 重新获得附件指南

每一个文件在恢复上传到 Confluence 的时候必须单独重命名,你可以通过下面说明的 3 个方法中选择一个进行操作: 选择 A - 通过文件名恢复附件 如果你知道你需要恢复的每一个文件名,尤其是你...

honeymose ⋅ 今天 ⋅ 0

【每天一个JQuery特效】根据状态确定是否滑入或滑出被选元素

主要效果: 本文主要采用slideToggle()方法实现以一行代码同时实现以展开或收缩的方式显示或隐藏被选元素。 主要代码如下: <!DOCTYPE html><html><head><meta charset="UTF-8">...

Rhymo-Wu ⋅ 今天 ⋅ 0

度量.net framework 迁移到.net core的工作量

把现有的.net framework程序迁移到.net core上,是一个非常复杂的工作,特别是一些API在两个平台上还不能同时支持。两个类库的差异性,通过人工很难识别全。好在微软的工程师们考虑到了我们顾...

李朝强 ⋅ 今天 ⋅ 0

请不要在“微服务”的狂热中迷失自我!

微服务在过去几年一直是一个非常热门的话题(附录1)。何为“微服务的疯狂”,举个例子: 众所周知,Netflix在DevOps上的表现非常棒。Netfix可以做微服务。因此:如果我做微服务,我也将非常...

harries ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部