On 25 Jun 2009, at 20:14, Inoussa OUEDRAOGO wrote:

2009/6/25 Jonas Maebe <jonas.ma...@elis.ugent.be>:

On 25 Jun 2009, at 19:58, Ruediger Hahn wrote:

I am just wondering if this is a bug: Can anyone tell me why I get a
"range check error while evaluating constants" with the following simple
program:

<code>
program Project1;

const
MyVar : UInt64 = $FFFFFFFFFFFFFFFF; // 4 x 2 Bytes or 4 Words

begin
end.
</code>

The reason is that $FFFFFFFFFFFFFFFF is parsed as an int64 by FPC. As a
result it equals -1, and -1 is not a valid uint64 value.

This warning is actually misleading

Not warning would be misleading (and wrong).

as it makes one doubtfull about
the correctness of the program( In my case I debugged the program to
be sure that the "good" value was assigned).

When it's changed, you will get the warning/error when assigning this value to an int64 and then those cases can be debugged. It's the same when we changed from parsing $80000000-$FFFFFFFF as a longint to parsing it as a cardinal. Suddenly a whole bunch of code no longer worked correctly anymore then either, and we got a bunch of questions why code no longer compiled or produced warnings.


Jonas
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to