[fpc-pascal]QWord vs. function Abs

Anton Tichawa anton.tichawa at chello.at
Thu Aug 21 02:56:43 CEST 2003


On Wednesday 20 August 2003 20:17, you wrote:
> At 18:24 20-8-2003, you wrote:
> >On Wednesday 20 August 2003 16:56, you wrote:
> > > > > Hallo,
> > > > > i'm newbie and maybe making something wrong.
> > > > >
> > > > > Small example for go32v2:
> > > > >
> > > > > var q1,q2:qword;
> > > > > begin
> > > > >   q1:=10;
> > > > >   q2:=20;
> > > > >   writeln(Abs(q1-q2));
> > > > > end.
> > > >
> > > >I get runtime 215 with FPC 1.0.6 ...
> > > >
> > > >This probably means that FPC cannot support qwords in the abs function
> > > >even though the documentation says "Any numerical type".
> > >
> > > The problem is that there is a abs(int64) and abs(cardinal) and it
> > > can't decide which to take. An abs(qword) needs to be added
> >
> >IMHO, abs(cardinal) doesn't make any sense .. calling it could even be
> >considered a design or coding error, couldn't it?
>
> Then abs(qword) also doesn't make any sense

True. So I think the best way is either to declare

var q1, q2: int64;

or, if they have to be qwords for some reason, to typecast:

writeln(abs(int64(q1) - int64(q2)));

Still, the documentation states "any numerical type". If there's time for it, 
FPC should imho generate a call to abs(int64) and possibly issue a warning 
when it encounters abs(qword).

Anton

----------

Ing. Anton Tichawa
Volkertstrasse 19 / 20
A-1020 Wien
phone: +43 1 218 97 59
email: anton.tichawa at chello.at

----------

"Adas Methode war, wie sich zeigen wird, Tagträume in offenbar korrekte 
Berechnungen einzuweben."

Doris Langley Moore: Ada, Countess of Lovelace (London 1977).

----------




More information about the fpc-pascal mailing list