NAME: CALC.DCU ver. 1.0

NON VISUAL COMPONENT FOR DELPHI VER.2 ONLY (NO SOURCE CODE):
FILES: CALC.DCU, CALC.DFM, CALC.DCR

Free calculator component from Gerrit van Niekerk, <raasbek@ilink.nis.za>

N.B. The program is case-senstive.

Test Example:
                    a  =  2
                    b  =  3
                    a + b        --> result is 5
                    f(x) = y     --> reports unknown variable y
                    f(x) = x
                    f(3)         --> result is 3
                    f            --> reports that f is a function
                    f(x,y) = x+y --> redefine f


pi, e, sqrt, sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, acosh,
atanh, log {base 10}, log2, ln, DegToRad, RadToDeg, GradToRad, RadToGrad,
CycleToRad, RadToCycle.


//////////////////////////////////////////////////////////////////////

Programming interface:

1. InString       //  string --> Input for parser
2. Execute        //  You must call this function
3. IsError        //  boolean --> true indicates an error during execution
4. ErrorPosition  //  Indicates position in InString where parsing failed
5. ErrorString    //  string --> Message of what went wrong
6. Result         //  double

Step 1: Add component Calc.DCU
Step 2: Open Test.prj and compile it.
Step 3: Test VALID maths equations. Note that something like "2 + 3 + "
        will cause an exception. Click the green arrow to continue from
        such an exception. When the program runs as a standalone
        this problem does not occur. So only type valid equations and
        expressions during your program construction.

It's best to close delphi after step 2 and then to test the program.

//////////////////////////////////////////////////////////////////////

When you define func(x,y,z) = expression and then redefine it, the
memory used by the old version of func is not freed.
I'll try my hand at garbage collection later on.

N.B.
I'm not accepting any responsiblity for my program's actions

Please send suggestions, comments or bugs to
Gerrit van Niekerk, <raasbek@ilink.nis.za>
Cape Town, South Africa
