[fpc-pascal] Range checks

Santiago A. svaa at ciberpiula.net
Mon Jan 29 21:04:37 CET 2018


El 27/01/18 a las 15:10, C Western escribió:
> The following innocuous looking code generates a range check error:
>
> {$R+}
> function Count: qword;
> begin
>   Result := 0;
> end;
> var
>   i: Integer;
> begin
>   for i := 0 to Count-1 do
>     WriteLn(i);
> end.
>
> I can (more or less) see why, but it means that I can't (for example) 
> compile the Cocoa widget set in 64 bit with bounds checking on, as 
> then qword seems to be used as a count for, for example, NSarray.
>
> Am I missing something?

The problem is that count is qword, so the operation is qword until it 
needs to convert it

for i:=0 to integer(qword( qword(count) -  qword(1)) do

try this:

for i := 0 to *integer*(Count)-1 do

-- 
--------
Saludos
Santiago A.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20180129/790af5da/attachment.html>


More information about the fpc-pascal mailing list