TAlgXpr is a Delphi component that evaluates and stores the result of algebraic expressions. The expressions may include numeric literals, numeric variables, string literals, and string variables with a number of functions and operators. This demo version includes the following pre-defined functions and operators: := Assignment * Multiplication / Division + Addition - Subtraction (or negation) % Modulus ^ Exponentiation Min Minimum of a comma-separated parameter list (20 or fewer) Max Maximum of a comma-separated parameter list (20 or fewer) Sin(X) Sine of a numeric value Cos(X) Cosine of a numeric value Numeric values are handled as extended real numbers. String values are limited to 255 or fewer characters. A distinguishing feature of this algebraic parser is the fact that it is extensible. New functions and operators can be added to the list of operations recognized by the parser. The implementation of such additional operations is defined by the code of the program using the TAlgXpr component. TAlgXpr's assignment operator is a binary operator which returns its right-hand side as its result. This makes it possible to evaluate such expressions as "X := Y := Z := PI". This expression evaluates as PI, and assigns that value to the three variables X, Y, and Z as a side-effect. It also means that expressions such as "X := (Y := (Z := 1) + 1) + 1 are evaluated in such a manner that X becomes 3, Y becomes 2, and Z becomes 1. The usual order of operations is assigned to the pre-defined binary operators so that 2+3*4 evaluates as 2+(3*4) rather than (2+3)*4. User-defined binary operators may be set to any precedence level that seems desirable. Precedence is an integer value that is as follows for the pre-defined operations - 100 for + - 200 for * / % 300 for ^ 1000 for - used as a negation symbol 1500 for := Precedence does not apply to anything other than binary and unary operations. The development of this component has occupied a lot of time. It was tricky to get it to work in the manner described. It would have been impossible to debug without the excellent tool named MEMMOND.EXE which was placed in CompuServe's Delphi file library under the name MEMMND.ZIP by its author, Per Larsen. The author of TAlgXpr wishes to thank Per Larsen for that amazing utility. Because it has taken such a lot of research and development, this component is not being offered free of charge. What you have is a demonstration version that can be used to illustrate the useful nature of the component. If you are interested in the full version, contact Glynn Owen as user 71073,2552 via E-mail on CompuServe. The internet address is 71073.2552@compuserve.com. You can also contact abszero@pe.net. Source code is available, but expensive. Because the author has every intention of making a profit from the time and effort put into writing this component, be advised that as a user of the demo version, you are explicitly forbidden the use of this component in any commercial fashion without a license from the author. Use it for your own purposes all you like, but to sell it to anyone in any form is a de facto recognition of the fact that you owe the author money! The author will provide a free copy of the full version to any person who contacts the author with a verifiable bug that has not yet been reported. This demo version will not function with standalone programs. Delphi must be up and running for any program using this demo to work. The demo includes the current version of the help file that will be distributed as part of the full package. This help file is NOT linked into Delphi. It can be accessed by using the File|Open selection of the Help system menu. This unit can be used as the basis for any kind of calculator. The author is working on a graphing calculator that will be freeware when it is complete. This unit can also be used as the basis for implementing macro expression handling in database applications. It was developed for this very purpose. The price of the full version of this unit is $15.00. You can buy a license through the Compuserve Shareware Registration services. The unit's shareware registration number is