【问题标题】:Why are functions like "Point" / "Rect" / "Bounds" (etc) declared both in Classes and in Types unit?为什么在类和类型单元中都声明了像“Point”/“Rect”/“Bounds”(等)这样的函数?
【发布时间】:2017-12-07 08:19:27
【问题描述】:

我注意到在 Delphi 7 中,Point / Rect / Bounds 等函数在Classes 和系统Types 单元中都被声明和实现。

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

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

【问题讨论】:

  • Module Classes 包含 Types,所以原因可能与您猜想的不同。在东京也是如此(可能是为了向后兼容)。

标签: delphi delphi-7


【解决方案1】:

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

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

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

此更改是在 Delphi 5 和 Delphi 6 之间进行的,这是 Delphi 跨平台开发的开始。在那个例子中是 Kylix,但 RTL 的重组有利于未来的跨平台开发,即使 Kylix 被放弃了。

【讨论】:

    猜你喜欢
    • 2018-12-19
    • 2012-11-17
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多