学习 TList 类的实现[1]
我对函数与类的理解是:
函数是一个功能模块, 类是一个更强大的功能模块; Delphi 已经提供了很多的函数与类, 但很多时候我们却视而不见, 重新"刀耕火种".
曾记得网上有一个 Delphi 行家连续几年开发与升级一个"通配符"相关的函数, 终于有一天他说: 原来 Delphi 有这个函数.
也见过有人大骂 Delphi 连哈希表都没有, 其实只有他不知道而已.
我自己也傻呵呵地实现过 StringOfChar 类似功能的事情, 在这个帖子中:
http://www.cnblogs.com/del/archive/2008/03/12/1101970.html
早就想认真学习几个 Delphi 的类, 看看它的实现过程和实现思路, 以尽早让自己的程序走入正途; 之所以选中 TList 作为开始, 不仅仅是因为它简单、常用, 更主要的原因是: 它是直接由 TObject 派生的.
定义一个继承于 TObject 的类, 有以下三种写法:
TMyList = class(TObject) end;TMyList = class end;TMyList = class(TObject);
如果只是在本单元使用, 可以定义在 implementation 区; 但一般要放在 interface 区, 以让其他单元都能使用.
就像定义变量需要冠以 Var、常量需要冠以 Const 一样, 定义一个新的类型需要冠以 Type.
区内所有类型可以共用一个 Type, 若不嫌罗嗦, 每种类型分别冠以 Type 也无不可.
下面的例子中的 TMyList 类就定义在 interface 区 TForm1 类的后面, 因为它们没有依存关系, 前后无所谓.
尽管我们没有给这个类添加任何功能, 因为它继承于 TObject, 并且 TObject 没有 private 区, 所以现在 TMyList 已拥有 TObject 同样的功能(但 Delphi 认为, 它们已经不是一个类型了).
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)procedure FormCreate(Sender: TObject);end;{自定义的 TMyList 类}TMyList = class(TObject)end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject); varmyList: TMyList; {声明一个 TMyList 类的变量} beginmyList := TMyList.Create;ShowMessage(myList.ClassName); {TMyList}myList.Free; end;end.
转载于:https://www.cnblogs.com/del/archive/2008/03/26/1122241.html
学习 TList 类的实现[1]相关推荐
- 学习 TList 类的实现[5]
先来实现 TMyList.SetCapacity. 马上会想到下面代码: procedure TMyList.SetCapacity(const Value: Integer); beginif FC ...
- 学习 TList 类的实现[6]
实现 TMyList.Add 函数. TList 中的 Add 函数用到了一个 Grow 方法, 它的原理是元素越多就为以后准备更多内存, 我们这里省略为预留 4 个元素的内存; TList 中的 A ...
- 如何学习streamdecoder类_如何学习篇5:强化2种能力——2种学习模式之运动类:隐性学习...
[本文摘要] [注]本文所述内容为学习Yjango<学习观>相关视频之后的总结,观点归Yjango所有,本文仅作为学习之用. 阅读本节,会让你对英语这类运动类知识的学习豁然开朗,你会知道英 ...
- java中蛇的属性有哪些_学习Java类的属性
学习Java类的属性-武汉北大青鸟 Public.private.protected显示了三种类中的属性和服务的类型,public是可以随意访问的.private是外界不能访问的(显示了数据的封装性) ...
- 普通话测试软件测分准吗,普通话学习测试类 | 普通话测试APP,能做到测试、学习提高两不误吗?...
原标题:普通话学习测试类 | 普通话测试APP,能做到测试.学习提高两不误吗? 普通话是如今人们生活的常用语言,但要说到参加普通话测试,如果没有提前了解普通话测试的形式与要求,也不知道自己普通话的起步 ...
- 学信息安全买计算机,大学学习计算机类信息安全方向真的很蠢吗?
大学学习计算机类信息安全方向真的很蠢吗? 本人2018届高考党,目前水平可以上一个不错的211,望借自主招生冲击985院校. 几天前,当我对老师说:"我目前最优先的选择是计算机-信息安全方向 ...
- java虚拟机预先加载哪些类_Java虚拟机JVM学习02 类的加载概述
Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...
- Java为枚举类创建成员变量_Java学习——枚举类
Java学习--枚举类 摘要:本文主要介绍了Java的枚举类. 部分内容来自以下博客: https://www.cnblogs.com/sister/p/4700702.html https://bl ...
- 2020-用多通道卷积神经网络学习单类特征用于人脸表现攻击检测
2020年,Anjith George等人,期刊:TIFS,CCFA刊,Learning One Class Representations for Face Presentation Attack ...
- 游戏策划学习:类银河恶魔城、烬
游戏策划学习:类银河恶魔城.烬 1.roguelike和银河恶魔城类游戏的区别 (1).地图复用是银河恶魔城类非常重要的一个特征.通过剧情导向和收集要素,让玩家多次探索同一个地图区域,用有限的资源延长 ...
最新文章
- Oracle Goldengate OGG 11g与各操作系统及数据库版本的兼容列表
- 改善Hibernate应用程序性能的7种方法
- python object类
- cs架构用什么语言开发_用Rust语言开发微信小程序
- JavaSE中容易忽视的坑
- 【步骤详解】畅捷通T+Cloud无代码集成钉钉群机器人示例
- 线性代数之 实对称矩阵,正交对角化,二次型与正定矩阵
- 抖音极速版自动运行脚本
- 常用类(API)第一节
- Acegi源码研究(五):七剑下天山
- 程序员如何搭建自己的知识体系?
- 外汇汇率接口 java_基于java的货币汇率接口调用代码实例
- 用webgl绘制一个彩色旋转立方体
- BitComet(比特彗星)64位 V1.57
- Cygwin安装和配置
- 堆排序Java实现以及使用场景
- VSCODE(三)用户界面
- 1px、1em、1rem、1vh / 1vw 的含义
- pc端微信小程序抓包
- 物联网资产暴露情况分析
热门文章
- 解决办法:error: item inner element must either be a resource reference or empty.
- gstreamer支持多摄像头的思路
- 用imspost制作catia后处理_为什么我推荐你用3D打印技术制造模具?
- 关于用C#调用C++的dll中的函数,获取字符串返回值的一些细节
- java编程50题和解释_最新JAVA编程题全集(50题及答案)29515
- fcntl.h里没有open_国际高中课程里的IB课程 你了解多少?
- mysql group by聚合字段合并_mysql groupby 字段合并问题(group_concat)
- google 插件_Google浏览器常用插件与使用小技巧
- Sequelize-nodejs-5-Querying
- UML序列图总结(转)