[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