[comp.lang.pascal] converting Double to Real to Int.

murphy@pur-phy (William J. Murphy) (11/17/88)

[ for all you do..... this line's for you]

I have been perplexed by the typing of doubles reals and ints in Turbo Pascal
4.0.  My problem is this, I have an array of doubles that I wish to plot
to the screen.  In order to do that, I must map them to the screen coords.
To do the mapping, I use the following bit of code.

yshift := Win1.Height - trunc( Win1.YScale * Win1.YMin);
For i := 1 to 512 do
Begin
   y  := data[i];
   y1 := yshift + trunc( Win1.Yscale * y);
   PutPixel(i, y1, 13);
End;

The preplexing part is that trunc requires a real.  o.k, I give it a real,
and I get a floating point overflow error (#205 to be specific). I give it
a double, and I get error (#207 : invalid floating point operation).
What I can guess from the description of the error, is my value for 
Win1.YScale * y is outside the range of a longint.  

Question:  Has anyone come up against such a problem? If so, did you 
           solve it?  Is it possible to write your own int() or trunc()
           functions that will return a value when outside that range?

This may all be a moot point. (do moot's have points?) I am interested
in other's experience with this type of problem.
Thanks,
Bill Murphy
murphy@newton.physics.purdue.edu