DeHL集合库中使用THashSet的错误

时间:2011-07-19 22:41:12

标签: delphi delphi-xe dehl

我是Delphi的新手,我正在尝试使用DEHL Collections库。 (参见http://code.google.com/p/delphi-coll/)从IDE的角度来看,我遇到了一些麻烦。它编译并正确运行,但Delphi XE在我使用HashSet库的任何地方都显示错误。最大的不满是阻止我使用代码完成。

我收到错误的第一个位置是对象声明:

uses
  SysUtils, Windows, Collections.Base, Collections.Sets, Collections.Lists,
  adscnnct, adstable,
  uOtherClass;

type
  OneClass = class(OtherClass)
    private
      _bad: THashSet<string>;   // THashSet underlined
      _good: TList<string>;     // No problems
  end;

错误说明:“类型参数与约束不匹配”

我不认为这是配置,因为我可以使用TList就好了,但这是我如何设置它:我已经将库复制到Projects / Libs / DeHLCollections / Library并将库编译为Projects / Libs /完事。我已经将bin目录包含在我的全局库路径中,这使它可以编译和运行。我已尝试将所有内容(/ libs,/ DeHLCollections,/ Library)添加到其中,以期让IDE帮助我,但它似乎没有帮助。

无论如何要解决这个问题,还是只需处理它?<​​/ p>

使用DeHL Collections版本1.1.1.119

1 个答案:

答案 0 :(得分:6)

欢迎使用泛型载入代码的麻烦。 DeHL和泛型在Delphi XE中比以前的任何Delphi版本都要好得多,但这与“没有任何问题”不一样。我遇到的问题与你的问题完全一样。

我的观点是,DeHL显示出由德尔福大师程序员编写的每一个迹象,并且在某些方面它是美丽的东西。它也是一种巨大痛苦的源泉,而不是它本身的过错。

Delphi不包含一个或两个,但至少有三个(可能是四个?)单独的解析器,包括完整的编译器解析器,以及用于Error Insight之类的一些IDE解析器(甚至在构建之前看到的错误)和代码完成数据解析器。对于泛型,每种语言都有不同的语言支持限制。或许可以编写DeHL以避免使用所有各种Delphi解析器的解析器问题。我还没有看到有关显示限制的指南,但如果TSomething<TSomething<ISomethingElse>,TBar<IFoo>>形式的复杂类型声明打破了多个解析器,我不会感到惊讶。

如果您打算非常重视Generics,您也可以关闭Code Completion和Error Insight。您可能还希望经常保存,并准备好遇到很多编译器问题。并且不要尝试编译泛型代码并将其放入包中。当我编写基于泛型的代码时,我经历了很多URW和AV(内部编译器错误)。我发现Delphi编译器团队很擅长修复报告的内容,但是当我限制自己使用Delphi附带的Generics.Collections而不使用其他基于泛型的代码时,Generics对我来说真的最稳定。似乎可以使用泛型功能编写内容,IDE和双向工具以及代码完成尚未完全准备好处理。这意味着,惊人的宇宙通用能力会降低经典RAD IDE生产力功能的成本。

话虽这么说,latest DeHL sources from Subversion对我来说很好,并且没有错误地构建和运行,但整个DeHL集合的最新源ZIP对我来说都有问题。

我希望在Delphi的下几个版本中,无论发现什么问题(并且DeHL似乎是一个突破界限的好地方,这也是我很喜欢它的原因之一)将是修复了,你不会想知道为什么重型泛型会破坏你的IDE功能,因为它们都会再次运行。