On 04/04/12 01:57, Jonas Maebe wrote:
On 03 Apr 2012, at 20:27, patspiper wrote:
The following is related to bug #0021641 (Array of const gives check range
error).
Is it correct for the exception to manifest itself in the dword case and not
the qword one?
writeln(Format('%d', [qword(qword(High(Int64))+1)])); //ok
writeln(Format('%d', [dword(dword(High(integer))+1)])); //exception
Yes, it's correct, because as mentioned in the bug report tvarrec can hold a
qword, but not a dword (and dword must be passed as 32 bit = longint for Delphi
compatibility).
Following the same logic, a qword must be passed as 64 bit = Int64 for
Delphi compatibility, as Delphi's TVarRec can hold integer and Int64,
but not qword nor dword.
In contrast, FPC's TVarRec can hold integer, Int64, and qword, meaning
that a qword is passed as a qword and not Int64. So since FPC's TVarRec
includes qword while Delphi's does not, why not add dword as well?
Stephano
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel