为什么在类和类型单元中都声明了像“Point”/“Rect”/“Bounds”(等)这样的函数?

时间:2017-12-07 08:19:27

标签: delphi delphi-7

我注意到在Delphi 7中Point / Rect / Bounds(等)等函数在Classes和系统{{1}中声明并实现} unit。

有原因吗?对于较新的Delphi版本也是如此吗?

(我的猜测是,可以使用Types单位在需要时避免Types开销。

1 个答案:

答案 0 :(得分:13)

在旧版本中,这些类型和函数在Classes中声明。随着RTL的开发,特别是为了支持跨平台,期望这些类型可用于不包含Classes的单元。

引入了Types单元来启用它。 Types单元没有uses个依赖关系,因此可以安全地被任何其他单元使用,无论级别多低。

主声明已移至TypesClasses重新导出这些类型和函数,以利于从Classes导入的现有代码。例如,SysUtils使用Types,但不允许使用Classes。将这些类型和函数移动到像Types这样的无依赖单元可以实现这一点。

这一变化是在Delphi 5和Delphi 6之间进行的,这是Delphi跨平台开发的开始。在那种情况下,它是Kylix,但RTL的重组有利于未来的跨平台发展,即使Kylix被放弃了。