home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / express.zip / README.TXT < prev    next >
Text File  |  1995-08-30  |  14KB  |  355 lines

  1.  
  2.             =============================
  3.             Expression v1.3 Documentation
  4.             =============================
  5.  
  6.  
  7.    Thank you for trying Expression v1.3.
  8.  
  9.    It's a demonstration program, to show the possiblities of 
  10.    ExEngine v3.3 - the underlying code-module that handles variables 
  11.    and expressions, generates P-code out of them and evaluates / executes
  12.    it - all at runtime.
  13.  
  14.    Also it's a useful program to visualize numeric expressions to 2D-graphs.
  15.  
  16.    With this release you receive identical versions of Expression for
  17.    Win16, Win32 and OS/2. It has not been tested for Windows 95.
  18.    Please let me know, if you expirience problems with Windows 95.
  19.  
  20.    If you are interested in having ExEngine v3.3 read the section 
  21.    named "ExEngine".
  22.    
  23.    It's available as DLL you can use from nearly any programming-
  24.    lanuage for windows and OS/2, including C/C++, Basic and so on - also 
  25.    available for other platforms or as source-code.
  26.  
  27.    Please, also note the announcement of "VPEngine" The Virtual Print 
  28.    Engine at the end of this manual.
  29.    
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.    ==========
  37.    I. Preface
  38.    ==========
  39.    Expression is an easy-to-use program which can be understood and 
  40.    handled very fast. It's optimal for schools and schoolars, nothing 
  41.    needs to be explained for very long.
  42.  
  43.    This program is freeware. Give it to your friends, collegues and 
  44.    anybody else who could be interested in it. You need not to register.
  45.  
  46.    You must distribute this program unchanged and intact, all files have 
  47.    to be shipped with it, also this "readme.txt".
  48.    Freeware/Shareware vendors may distribute the program freely provided
  49.    they contact me first and charge less than $5 for disks/shipping/etc.
  50.    and not for the program itself.
  51.  
  52.  
  53.    My address:
  54.  
  55.    T. Radde                         CompuServe: 100 430, 34 27
  56.    Grefrather Weg 96
  57.    41464 Neuss                      Internet:   100430.3427.compuserve.com
  58.    Germany
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.    ================
  69.    II. Installation
  70.    ================
  71.  
  72.    EXPRESS.EXE is installed correctly, when it comes up showing
  73.    a black, a red and a blue graph. Otherwise check the working
  74.    directory.
  75.  
  76.  
  77.    Files in this archive:
  78.    ----------------------
  79.    README.TXT     -- this file
  80.    FEEDBACK.TXT   -- feedback form (ASCII text)
  81.    EXPRESS.INI    -- common ini-file for all platforms
  82.    DEFAULT.EXP    -- contains no definitions
  83.    TRIGONOM.EXP   -- demonstration definitions (sine & cosine)
  84.    ANALYSIS.EXP   -- demonstration definitions (f(x), f'(x) and f"(x))
  85.    OS2/EXPRESS.EXE   -- program file
  86.    WIN16/EXPRESS.EXE -- program file
  87.    WIN32/EXPRESS.EXE -- program file
  88.  
  89.    Don't forget the "-d" parameter for pkunzip to extract the
  90.    subdirectories. ("pkunzip -d express.zip")
  91.  
  92.  
  93.     1. Create a directory on your hard drive - e.g. C:\express
  94.        [you can use a different directory or share an existing one if you 
  95.        want]
  96.     2. Copy all of the files in this archive file into that directory (see
  97.        above for a complete list).
  98.  
  99.     Windows:
  100.     3. Start up Windows if you weren't already using the File Manager to 
  101.        perform the steps above.
  102.     4. Open the group in Program Manager you want to put Expression in.
  103.        Select "New..." from the "File" menu in Program Manager.
  104.     5. Select "Program Item" in the dialog box.
  105.     6. In the Description box, type "Expression".
  106.     7. Click the Browse... button and use the dialog box to navigate to
  107.        the directory Expression's files are in and select EXPRESS.EXE.
  108.     8. Set the working-directory to the same path where EXPRESS.EXE is
  109.        located.
  110.     9. Select "OK". Expression should now be installed. Double-
  111.        click on its icon to run it.
  112.  
  113.     OS/2:
  114.     3. Open the template folder.
  115.     4. Move the "Program" template with the right mouse-button
  116.        onto the desktop.
  117.     5. Enter the location where EXPRESSION is.
  118.     6. Enter the program name "Expression".
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.    =====================
  126.    III. Using Expression
  127.    =====================
  128.    
  129.    Expression is very easy to understand.
  130.  
  131.    The program is divided into two main parts:
  132.    1) Graph drawing (Menu: "Actions / Draw Graph")
  133.    2) Computing Expressions (Menu: "Actions / Expressions")
  134.  
  135.    In both dialogs you can define expressions and other parameters.
  136.    All these definitions can be saved using the Menu: "File / Save" and 
  137.    loaded using the Menu: "File / Open".
  138.  
  139.    Note: The "save"-function also saves the current layout - i.e. the 
  140.    positions and sizes of the windows.
  141.    But the last saved layout is always used for ALL definition files.
  142.  
  143.    On startup Expression automatically loads the last saved definition 
  144.    file.
  145.  
  146.    The rest of the program is explaining itself.
  147.  
  148.    -Just keep in mind, that changes only become valid, after you 
  149.    pushed the "Insert"- or "Change"- or "Set"-button...
  150.  
  151.    -Note the "y-range" button in the "Draw Graph" dialog, which 
  152.    calculates for all drawn functions over the specified x-range the 
  153.    maximum y-range, to make all graphs fit into the coordinate system.
  154.  
  155.    -Also note, that you can enter real EXPRESSIONS in both, the x-unit 
  156.    and the y-unit fields - you have two predefined variables:
  157.    "xr" and "yr", which means the value of "x-range" and the value of
  158.    "y-range".
  159.    This gives you the following advantage:
  160.    Imagine, you want to draw the sine-function over PI (=3.1415...). So 
  161.    you enter 3.1415 in the x-range-field. If you want to have the x-units 
  162.    drawn on PI/4 you would need to calculate these values.
  163.    Why? - We have got an expression-evaluator build in!
  164.    So just enter in the x-unit-field: "xr / 4"
  165.    That's all. - Look at the "trigonom.exp" - example definition.
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.    ===========================
  174.    IV. Description of ExEngine
  175.    ===========================
  176.  
  177.    In this version ExEngine is linked statically to EXPRESS.EXE, so you
  178.    won't find the DLL.
  179.    
  180.    ExEngine (= Expression Engine) is the heart of Expression.
  181.    ExEngine is a DLL, which can be used from any programming
  182.    language that supports the DLL-calling conventions. 
  183.    (like C/C++, Pascal, Basic, SQLWindows and so on)
  184.    It gives you the ability to define and modify variables and to use 
  185.    them within your self-defined functions at runtime. Using it from 
  186.    compiler-languages, such as C, you are additionally able to EXPORT 
  187.    THE ADDRESSES OF VARIABLES AND FUNCTIONS (!!!) FROM 
  188.    WITHIN YOUR CODE TO THE DLL, so that ExEngine can directly 
  189.    access them. This provides you nearly unlimited possibilities. 
  190.    Since ExEngine generates pseudo-code, computations are done 
  191.    very fast. (All computations are done with the "double"-datatype -
  192.    this is not the best for fast drawing graphs, but for calculations.)
  193.    Note, that all graphs, drawn by Expression are computed during they
  194.    are painted. There are no arrays or other tricks to increase the
  195.    performance.
  196.    
  197.  
  198.  
  199.    Examples on using ExEngine from C / C++:
  200.    ----------------------------------------
  201.  
  202.    void func()
  203.    {
  204.       long   pcode_handle;
  205.       double x, result;
  206.  
  207.       ExpBindVar(hExp, "x", &x);    // exports the variable's address to engine
  208.       if (ExpGetErr(hExp))
  209.          handle_error();            // perhaps the variable "x" is already defined ?
  210.                                     // (lack of memory problems are handled also)
  211.  
  212.       pcode_handle = ExpParseAndStore(hExp, "sin(x * 3) + sin(x)");    // just compiles - the storage of the pcode is managed by the engine
  213.       if (ExpGetErr(hExp))
  214.          handle_error();            // try possible error-conditions with the "Expression Dialog"
  215.                                     // all error messages are directly generated by the engine!
  216.                                     // (lack of memory problems are handled also)
  217.  
  218.       for (x = 0; x <= 1; x += 0.01)
  219.       {
  220.          result = ExpEval(hExp, pcode_handle);     // execute the pcode - all current variable values are used
  221.          if (ExpGetErr(hExp))
  222.             handle_error();         // perhaps division by zero or something else...
  223.          printf("f(%g) = %g\n", x, result);
  224.       }
  225.  
  226.       ExpRemoveVar(hExp, "x");
  227.    }
  228.  
  229.  
  230.  
  231.  
  232.    void func2()
  233.    {
  234.       double result;
  235.  
  236.       ExpDefineVar(hExp, "x", 3.14);    // creates variable within the engine, initial value is 3.14
  237.       if (ExpGetErr(hExp))
  238.          handle_error();                // perhaps the variable "x" is already defined?
  239.                                         // (lack of memory problems are handled also)
  240.  
  241.       result = ExpParseAndEval(hExp, "sin(x * 3) + sin(x)");     // directly compiles and evaluates
  242.       if (ExpGetErr(hExp))
  243.          handle_error();            // perhaps the variable "x" is already defined ?
  244.                                     // (lack of memory problems are handled also)
  245.  
  246.       printf("for x=%lg the result is %lg", ExpGetVar(hExp, "x"), result);
  247.  
  248.       ExpSetVar(hExp, "x", 1.57);                       // sets variable x to value 1.57
  249.       result = ExpParseAndEval(hExp, "x^3 + 5.43");
  250.       if (ExpGetErr(hExp))
  251.          handle_error();                // perhaps division by zero or something else...
  252.       printf("for x=%lg the result is %lg", ExpGetVar(hExp, "x"), result);
  253.       ExpRemoveVar(hExp, "x");          // remove variable definition from engine
  254.    }
  255.  
  256.  
  257.    The number of variables (exported or created) and the number of
  258.    stored expressions is only limited by available memory.
  259.    
  260.  
  261.  
  262.    ============================
  263.    IV.1 Distribution and Prices
  264.    ============================
  265.    The engine is available as an evaluation - or "home" - version, i.e. 
  266.    you may use it for a lifetime, but you must not give away the engine 
  267.    to other persons.
  268.    The evaluation version costs $99 per platform.
  269.    If you decide to develop software with it that you want to distribute, 
  270.    you can get the licensed version for $499 ($400 if you bought the 
  271.    evaluation-version before) per platform. This allows you to
  272.    distribute "ExEngine" with your applications completely license-free.
  273.  
  274.    Contact me for special conditions if you want to buy the C++ 
  275.    source code.
  276.  
  277.    Both, the evaluation- and the licensed-versions are shipped with full 
  278.    documentation on disk and the source code of "Expression" as an example.
  279.  
  280.    So far the kernel of "ExEngine" has been tested on 68K CPU based 
  281.    machines (originally developed on 68K platform and unchanged 
  282.    since then), on SCO-UNIX, OS/2, DOS and Windows. I think this is 
  283.    proving the quality of the source-code.
  284.  
  285.    ExEngine is since 1991 under development, the call-interface and
  286.    internal data structures have been re-worked several times for
  287.    best usability and performance.
  288.    I believe that ExEngine is bug-free. If you encounter any bugs,
  289.    please let me know.
  290.  
  291.    The porting to other platforms will follow upon requests.
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.    =====================================================
  300.    V. Coming soon: "VPEngine" - The Virtual Print Engine
  301.    =====================================================
  302.    
  303.    Windows has made printing for programmers easier.
  304.    VPEngine makes it really simple. - Create most complex documents 
  305.    by programming them in an really easy way.
  306.    Open as many virtual documents as you want.
  307.    Use colors, lines, circles, frames, boxes, bitmaps, charts, and
  308.    and and - for sure - text.
  309.    Give all drawing coordinates in 1/10 mm or 1/1000 inch.
  310.    Use all text-formatting features (left, right, centered, justified,
  311.    bold, italic, underlined).
  312.    Create table- and sub-table-templates on-the-fly (this means while
  313.    printing is in progress) to fill them with data.
  314.    Print 100 virtual pages and move virtually to the first page to put in 
  315.    some new data or to remove or just MOVE objects on the page (or to 
  316.    other pages), change objects in size or it's contents or any other 
  317.    attributes. (Everything you draw is in the world of VPE an Object.)
  318.    Don't care about the printer - it's resolution or printing-offset (this 
  319.    is the offset on the page the printer cannot print on) - your document 
  320.    will look on every printer as much the same as technical possible.
  321.    Don't care about previews and printing-dialogs - VPEngine does it 
  322.    for you.
  323.    Show the user a preview, let him make choices in your program, 
  324.    then rework the report while letting the preview open (or hide it). 
  325.    If you leave it open let the user watch the printing data change while 
  326.    your program is working on it. This gives you the possibility of 
  327.    INTERACTIVE printing.
  328.    Let the user zoom scale-free through the preview since it's true 
  329.    WYSIWYG-Vector-Graphics!
  330.    In fact VPEngine renders all objects in a virtual 2540 x 2540 dpi 
  331.    resolution and then transforms it to the specified device, be it the 
  332.    screen, a printer, a fax or whatsoever.
  333.    This gives best possible WYSIWYG results.
  334.    Using special, optimized algorithms (since 1993 under development), 
  335.    VPEngine is really FAST!
  336.  
  337.  
  338.    This is OPTIMAL for filling pre-printed forms with data, it's also 
  339.    optimal for such complex reports where a normal generator fails or 
  340.    needs 10 times more work to implement.
  341.    Use it in the same way like Expression from any programming language 
  342.    that supports the DLL-calling conventions. (like C/C++, Pascal, Basic, 
  343.    SQLWindows and so on)
  344.    VPEngine is database independent since you feed it with the 
  345.    needed data in such a simple way, you won't believe.
  346.  
  347.    Additionally there is a layout-tool under development for designing
  348.    templates (reports) simply with the mouse by point-and-click operations.
  349.  
  350.    VPEngine will be fair in price and license free.
  351.  
  352.    The Virtual Print Engine for Windows ▀-Version will be released
  353.    in late summer 1995.
  354.    
  355.