The components are intended for Delphi developers and perform high-speed (about 10 million evaluations per second) mathematics and boolean calculations. All components are available for Delphi 6, Delphi 7, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Delphi 10 Seattle, Delphi 10.1 Berlin.

Available material consists of the following parts:

  • CalcUtils unit is intended for the quick calculation of any expression;
  • TParser component is the calculation engine. It is suitable for calculation of large amount different expressions. It implements compiling the expression into the byte code and using it in the following calculations;
  • TCalculator component is fully-functional, stand-alone mathematics and multi-threaded shell for the parser. It differs from TParser by having additional mechanisms for reaching the best performance.


The components are intended for programmers of all levels and, for example, contain a number of high-speed simple methods having the singular input parameter of string type, which represents the mathematics expression, and returning the number (AsByte, AsInteger, AsBoolean, etc.). It makes possible using the parse components at any time without unnecessary understanding the internal parse mechanisms.

Some features of the parse components:

  • It is possible compiling the expression into the script and further using that script in calculations;
  • It is possible decompiling the expression into the string;
  • It is possible making user-defined functions. User-defined functions can be of five types:
    • A function requiring no parameters. Such function simply returns some result;
    • A function requiring parameter before itself;
    • A function requiring parameter after itself;
    • A function requiring both parameters – before and after itself;
    • A function requiring a number of parameters, following right after the function and enclosed in round brackets. These parameters can be of string type;
  • It is possible making variables;
  • It is possible making a direct reference to the simple variable of type like Byte, Integer, etc.;
  • It is possible making constants;
  • It is possible making types;
  • It is possible optimizing the expression. Optimization is simplifying of mathematic expression (if possible) at binary level; the result is an increase in evaluation speed;
  • It is possible working in multi-threaded mode. Multi-threaded mode provides the best performance due to simultaneous evaluation the elements in array of expressions;
    • It is possible using the internal automatic thread - to use it we only need to fill the expression array, start the execution and wait until all threads are done. You’re able so set up many parameters for managing the threads, for example, define the amount of automatic threads, adjust the priority of each automatic thread and much more;
    • It is possible using user-defined (Classes.TThread inheritor) thread;
  • It is possible making variables and building a dependency chain of any depth, where each variable depends on the previous one;
  • It is possible making your own variable lists (each element of the list looks like NAME=VALUE) and connecting them to the parser.


From February 28, 2014 the component source codes are available to download. No purchase necessary.

The components are not free, except for using in science purpose - in this case the science license is required; the science license allows to declare the unlimited number of user-defined functions. There are no restrictions making impossible using the components for non-commercial purpose in case of having no license. The only limitation is the number of user-defined functions. In any case you are able to define as minimum as ten functions for free (non-commercial use only). If it does not suite your needs we suggest you to buy the license increasing the number of user-defined functions. Any license not only defines the number of user-defined functions you may declare, but also grants the right for using the components for commersial purpose.

It is possible to download the component compatible to the Delphi version you require. In this case the downloaded components are limited by ten user-defined functions. You are able to buy the license increasing the number of user-defined functions. To do this please jump to the purchase page, select the appropriate component package and follow the further instructions. The payments are accepted through the PayPal system. When the payment is done you receive the email containing the license file. You only need to place the license file in the same folder as the application. To look through the license information in Delphi please use the following functions from the License unit:

  • function GetLicense: TStrings: function, returns the license text;
  • function GetLicenseCount: Integer; function, returns the number of user-defined functions included. When the amount is unlimited it returns -1.

Please note that the standard product packages and their prices are not the only thing we can offer. Any time you are welcome to make offers concerning desired terms of components use and the desired price. For receiving the science license and If you have any questions please feel free to contact us via: