[fpc-pascal] QWord/UInt64 and Range Check Errors
Jonas Maebe
jonas.maebe at elis.ugent.be
Thu Jun 25 20:17:43 CEST 2009
On 25 Jun 2009, at 20:14, Inoussa OUEDRAOGO wrote:
> 2009/6/25 Jonas Maebe <jonas.maebe at 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
More information about the fpc-pascal
mailing list