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

标签 delphi delphi-7

我注意到在 Delphi 7 中,像 Point/Rect/Bounds (等)这样的函数都是在 中声明和实现的类和系统类型单元。

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

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

最佳答案

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

引入了Types单元来实现这一点。 Types 单元没有 uses 依赖项,因此可以安全地被任何其他单元使用,无论级别有多低。

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

这一改变是在Delphi 5和Delphi 6之间进行的,这是Delphi跨平台开发的开始。当时是Kylix,但RTL的重组有利于 future 跨平台的发展,尽管Kylix被放弃了。

关于delphi - 为什么像 "Point"/"Rect"/"Bounds"(等)这样的函数同时在类和类型单元中声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47690521/

相关文章:

delphi - 如何在Delphi XE2上调试2个dll?

delphi - 修改系列点时是否可以仅重新绘制 TeeChart 的一个区域?

delphi - TDateTimePicker 在显示中显示时间并可以编辑时间

Delphi2010编译错误: F2084 Internal Error: L1737

delphi - 如何在 PowerPoint 中找到当前编辑的幻灯片?

Delphi 6 用构造函数创建新表单

delphi - 使用 WM_SETFOCUS 和 WM_KILLFOCUS

delphi - 印地。使用 % 发布字符串时出错

delphi - 最优Buffer Stream写入流程

delphi - TStringGrid 的 OnColumnChanged 和 OnRowChanged 事件