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

zig*_*zig 3 delphi delphi-7

我注意到在Delphi 7中,Point/ Rect/ Bounds(etc)之类的函数Classes在系统Types单元中和系统单元中都被声明和实现.

这有什么理由吗?对于较新的Delphi版本也是如此吗?

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

Dav*_*nan 13

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

Types引入该单元以实现这一目标.该Types单元没有uses依赖关系,因此可以安全地被任何其他单元使用,无论级别多低.

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

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