【问题标题】:Are Generics in D2009 usable in large projects?D2009 中的泛型可用于大型项目吗?
【发布时间】:2009-09-08 10:12:53
【问题描述】:

我很沮丧。我正在使用 Delphi 2009,并且很高兴在这个版本的 Delphi 中包含泛型。一开始一切都很好,但是现在我到处都使用泛型,我遇到了一个又一个问题——大多数时候是一些内部错误,我什至看不到它们到底是在哪里引起的。我多次尝试重组代码以避免泛型问题,但总是会遇到新的问题。

现在我决定一起删除泛型并使用一些动态转换来专门化我的类。对此不是很兴奋,但我只是看不到其他选择。我不能花一整天的时间来追踪 Delphi 的内部编译器错误...

是否有人在大型项目中使用泛型而不会遇到此类问题?也许是我的错?还是不能在复杂的项目中使用它们?

我希望 D2010 修复所有这些问题。

【问题讨论】:

  • 哎哟......内部编译器错误?这绝对是德尔福的一大禁忌。我已经有 10 年左右没有使用 Delphi 了,但是您所说的似乎很糟糕。
  • 随着 Delphi 2(很久以前)的引入,这是第一个带有 32 位编译器的 Delphi 版本,我也遇到了一堆内部错误。似乎 Borland/Inprise/... 在新版本的编译器中发布经过良好测试的新功能时遇到了麻烦。
  • 这不是论坛。你有真正的编程问题吗?
  • 我的问题是:是否可以在大型项目中使用 D2009 泛型?这显然是一个编程问题,因为它会影响我编写代码的方式:)
  • 编辑标题以减少主观性。

标签: delphi generics delphi-2009


【解决方案1】:

我在 Delphi 2009 中广泛使用泛型,我可以说这并不容易,因为您经常需要在 ICE 周围工作。更糟糕的是,泛型甚至会弄乱链接器,也就是说,您不能真正在包中使用它们(C++Builder 包除外)。

所有这些麻烦似乎在 Delphi 2010 中都消失了;由于仿制药,我几乎从未见过 ICE。我需要我的代码在 2009 年和 2010 年都可以工作:(

【讨论】:

    【解决方案2】:

    D2009 中的泛型支持一开始真的很糟糕。更新 3 修复了很多东西,但不是全部,并且在 Generics.Collections.pas 中至少留下了一个严重的错误。在某些方面,它实际上变得更糟了,因为现在当编译器阻塞某个泛型构造时,不会给你一个语法错误,而是经常会得到一个内部编译器错误,而且你不知道是什么原因造成的。

    它在 2010 年得到了相当大的改进。在相当模糊的情况下仍然存在一些与泛型相关的问题,但只要您不使用包或将泛型放入类助手中,它们通常可以安全使用或类似的奇怪的事情。

    底线:如果您想使用它们,请升级到 2010。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多