[fpc-pascal]runtime 201 with swapword function

Jonas Maebe jonas at zeus.ugent.be
Fri Jul 25 16:21:36 CEST 2003


On vrijdag, jul 25, 2003, at 16:22 Europe/Brussels, James Mills wrote:

> Why does the following result in a runtime error ?
>
> program example;
>
> const
> 	THE_PORT = 9999;
>
> function swapWord(w: Word): Word;
> begin
> 	swapWord := (w SHL 8) OR (w SHR 8);
> end;

In Pascal, all calculations are performed using the base type (which is 
longint in FPC), so if w > 255, then w shl 8 > high(word) and will 
result in a range check error when assigning to swapWord. Even if we 
calculated everything using words, you'd still get an overflow error, 
this time when doing the shl.


Jonas





More information about the fpc-pascal mailing list