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