Show quoted text 21 lines
On Fri, Jul 25, 2003 at 04:21:36PM +0200, Jonas Maebe wrote:
>
> 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.
change to
swapword word (w shl 8) OR word (w shr 8);
or temporarily disable {$R+} there.
How can I correct this ?
This bit of code was taken directly from server.pp in one of the old
2002 mailing threads...
But was it under {$R+} there?