0

当我创建一个TZCompressionStream对象时:

var
  cs: TZCompressionStream; 
  dest: TStream;
  level: TZCompressionLevel;
...
  cs := TZCompressionStream.Create(level, dest);

我得到这个编译器错误:

E2250 没有可以使用这些参数调用的“创建”的重载版本

但是我的代码是根据构造函数声明的:

Create(compressionLevel: TZCompressionLevel; dest: TStream); overload; 

当我使用 XE 时,一切正常。但是现在 XE5 出现了这个错误。为什么?

更新:

  • 工作代码:cs := TZCompressionStream.Create(dest);
  • 失败代码:cs := TZCompressionStream.Create(clMax, dest);

我还尝试更改参数的顺序,但没有成功。

4

1 回答 1

4

我假设您的代码如您的编辑中所述:

cs:=TZCompressionStream.Create(clMax, dest);

显而易见的解释是 clMax 不是你想象的那样。可能还有另一个单位定义了 clMax,并且该单位出现在您的使用列表中 ZLib 之后。通过以下任一方式解决问题:

  • 完全限定枚举值:ZLib.clMax,或
  • 更改使用顺序,使 ZLib 出现在定义其他 clMax 的单元之后。
于 2013-10-31T19:18:06.553 回答