[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