E1012常量表达式违反了Delphi XE4中的子范围边界错误

时间:2013-10-09 11:51:42

标签: delphi delphi-7 delphi-xe4

我在Delphi XE4中有以下行,它给了我错误:E1012 Constant expression violates subrange bounds

Message.WParam := clBtnFace;

当我调试代码时,我得到clBtnFace = -16777201;

的值

同样适用于Delphi 7代码。

我在stackoverflow上找到了以下链接,但无法解决我的问题: Using the `in` keyword causes "E1012 Constant expression violates subrange bounds" in Delphi

1 个答案:

答案 0 :(得分:4)

在现代Delphi版本中,Windows数据类型的声明与Windows头文件中的定义一致。并且WPARAM一直是一种无符号类型。但在旧版本的Delphi中,它被错误地声明为已签名。

因此,要在现代Delphi中创建代码编译器,您需要将值转换为与Message.WParam相同的类型。该类型为WPARAM

Message.WParam := WPARAM(clBtnFace);