Delphi中PointRectBounds等结构在类和类型单元中声明的必要性是什么?
- 内容介绍
- 文章标签
- 相关推荐
本文共计511个文字,预计阅读时间需要3分钟。
在Delphi 7中,`Point`、`Rect`、`Bounds`等类型的函数在`Classes`和`System Types`单元中声明和实现。这是出于以下原因:
1. 类型一致性:这些基础类型是Delphi编程中常用的,因此将它们放在标准单元中可以保证类型的一致性和可访问性。
2.模块化:通过将基础类型和函数放入单独的单元,可以更好地组织代码,便于管理和维护。
3.向后兼容性:这样做保证了不同版本的Delphi之间的一致性,便于开发者进行跨版本的迁移和兼容。
对于较新的Delphi版本,这种结构依然保持不变。例如,在最新的Delphi版本中,你可以通过`Types`单元来访问这些类型,从而避免了不必要的重复声明。以下是使用`Types`单元的示例:
delphi
uses Types;var MyPoint: TPoint; MyRect: TRect; MyBounds: TBounds;
通过这种方式,你可以有效地使用这些基础类型和函数,而无需额外的声明或实现。
我注意到在Delphi 7中,Point / Rect / Bounds(等)之类的函数在Classes和System Types单元中声明和实现.这有什么理由吗?对于较新的Delphi版本也是如此吗?
(我的猜测是,可以使用Types单元来避免需要时的类开销)
在旧版本中,这些类型和函数在类中声明.随着RTL的开发,特别是为了支持跨平台,期望这些类型可用于不包含类的单元.引入了类型单元以实现这一目标.类型单元没有使用依赖性,因此可以安全地被任何其他单元使用,无论级别有多低.
主声明被移动到Types,并且Classes重新导出这些类型和函数,以利于从Classes导入的现有代码.因此,例如,SysUtils使用Types,但不允许使用Classes.将这些类型和函数移动到像Types这样的无依赖单元可以实现这一点.
这一变化是在Delphi 5和Delphi 6之间进行的,这是Delphi跨平台开发的开始.在那种情况下,它是Kylix,但即使Kylix被放弃,RTL的重组也有利于未来的跨平台发展.
本文共计511个文字,预计阅读时间需要3分钟。
在Delphi 7中,`Point`、`Rect`、`Bounds`等类型的函数在`Classes`和`System Types`单元中声明和实现。这是出于以下原因:
1. 类型一致性:这些基础类型是Delphi编程中常用的,因此将它们放在标准单元中可以保证类型的一致性和可访问性。
2.模块化:通过将基础类型和函数放入单独的单元,可以更好地组织代码,便于管理和维护。
3.向后兼容性:这样做保证了不同版本的Delphi之间的一致性,便于开发者进行跨版本的迁移和兼容。
对于较新的Delphi版本,这种结构依然保持不变。例如,在最新的Delphi版本中,你可以通过`Types`单元来访问这些类型,从而避免了不必要的重复声明。以下是使用`Types`单元的示例:
delphi
uses Types;var MyPoint: TPoint; MyRect: TRect; MyBounds: TBounds;
通过这种方式,你可以有效地使用这些基础类型和函数,而无需额外的声明或实现。
我注意到在Delphi 7中,Point / Rect / Bounds(等)之类的函数在Classes和System Types单元中声明和实现.这有什么理由吗?对于较新的Delphi版本也是如此吗?
(我的猜测是,可以使用Types单元来避免需要时的类开销)
在旧版本中,这些类型和函数在类中声明.随着RTL的开发,特别是为了支持跨平台,期望这些类型可用于不包含类的单元.引入了类型单元以实现这一目标.类型单元没有使用依赖性,因此可以安全地被任何其他单元使用,无论级别有多低.
主声明被移动到Types,并且Classes重新导出这些类型和函数,以利于从Classes导入的现有代码.因此,例如,SysUtils使用Types,但不允许使用Classes.将这些类型和函数移动到像Types这样的无依赖单元可以实现这一点.
这一变化是在Delphi 5和Delphi 6之间进行的,这是Delphi跨平台开发的开始.在那种情况下,它是Kylix,但即使Kylix被放弃,RTL的重组也有利于未来的跨平台发展.

