最近整理了一些函数列表, 算是一个宏观的安排; 等以后再碰到一些函数时就可以放置的更有次序一些.

我对函数与类的理解是:

函数是一个功能模块, 类是一个更强大的功能模块; 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]相关推荐

  1. 学习 TList 类的实现[5]

    先来实现 TMyList.SetCapacity. 马上会想到下面代码: procedure TMyList.SetCapacity(const Value: Integer); beginif FC ...

  2. 学习 TList 类的实现[6]

    实现 TMyList.Add 函数. TList 中的 Add 函数用到了一个 Grow 方法, 它的原理是元素越多就为以后准备更多内存, 我们这里省略为预留 4 个元素的内存; TList 中的 A ...

  3. 如何学习streamdecoder类_如何学习篇5:强化2种能力——2种学习模式之运动类:隐性学习...

    [本文摘要] [注]本文所述内容为学习Yjango<学习观>相关视频之后的总结,观点归Yjango所有,本文仅作为学习之用. 阅读本节,会让你对英语这类运动类知识的学习豁然开朗,你会知道英 ...

  4. java中蛇的属性有哪些_学习Java类的属性

    学习Java类的属性-武汉北大青鸟 Public.private.protected显示了三种类中的属性和服务的类型,public是可以随意访问的.private是外界不能访问的(显示了数据的封装性) ...

  5. 普通话测试软件测分准吗,普通话学习测试类 | 普通话测试APP,能做到测试、学习提高两不误吗?...

    原标题:普通话学习测试类 | 普通话测试APP,能做到测试.学习提高两不误吗? 普通话是如今人们生活的常用语言,但要说到参加普通话测试,如果没有提前了解普通话测试的形式与要求,也不知道自己普通话的起步 ...

  6. 学信息安全买计算机,大学学习计算机类信息安全方向真的很蠢吗?

    大学学习计算机类信息安全方向真的很蠢吗? 本人2018届高考党,目前水平可以上一个不错的211,望借自主招生冲击985院校. 几天前,当我对老师说:"我目前最优先的选择是计算机-信息安全方向 ...

  7. java虚拟机预先加载哪些类_Java虚拟机JVM学习02 类的加载概述

    Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...

  8. Java为枚举类创建成员变量_Java学习——枚举类

    Java学习--枚举类 摘要:本文主要介绍了Java的枚举类. 部分内容来自以下博客: https://www.cnblogs.com/sister/p/4700702.html https://bl ...

  9. 2020-用多通道卷积神经网络学习单类特征用于人脸表现攻击检测

    2020年,Anjith George等人,期刊:TIFS,CCFA刊,Learning One Class Representations for Face Presentation Attack ...

  10. 游戏策划学习:类银河恶魔城、烬

    游戏策划学习:类银河恶魔城.烬 1.roguelike和银河恶魔城类游戏的区别 (1).地图复用是银河恶魔城类非常重要的一个特征.通过剧情导向和收集要素,让玩家多次探索同一个地图区域,用有限的资源延长 ...

最新文章

  1. Oracle Goldengate OGG 11g与各操作系统及数据库版本的兼容列表
  2. 改善Hibernate应用程序性能的7种方法
  3. python object类
  4. cs架构用什么语言开发_用Rust语言开发微信小程序
  5. JavaSE中容易忽视的坑
  6. 【步骤详解】畅捷通T+Cloud无代码集成钉钉群机器人示例
  7. 线性代数之 实对称矩阵,正交对角化,二次型与正定矩阵
  8. 抖音极速版自动运行脚本
  9. 常用类(API)第一节
  10. Acegi源码研究(五):七剑下天山
  11. 程序员如何搭建自己的知识体系?
  12. 外汇汇率接口 java_基于java的货币汇率接口调用代码实例
  13. 用webgl绘制一个彩色旋转立方体
  14. BitComet(比特彗星)64位 V1.57
  15. Cygwin安装和配置
  16. 堆排序Java实现以及使用场景
  17. VSCODE(三)用户界面
  18. 1px、1em、1rem、1vh / 1vw 的含义
  19. pc端微信小程序抓包
  20. 物联网资产暴露情况分析

热门文章

  1. 解决办法:error: item inner element must either be a resource reference or empty.
  2. gstreamer支持多摄像头的思路
  3. 用imspost制作catia后处理_为什么我推荐你用3D打印技术制造模具?
  4. 关于用C#调用C++的dll中的函数,获取字符串返回值的一些细节
  5. java编程50题和解释_最新JAVA编程题全集(50题及答案)29515
  6. fcntl.h里没有open_国际高中课程里的IB课程 你了解多少?
  7. mysql group by聚合字段合并_mysql groupby 字段合并问题(group_concat)
  8. google 插件_Google浏览器常用插件与使用小技巧
  9. Sequelize-nodejs-5-Querying
  10. UML序列图总结(转)