123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- Program EasyEvalExample;
- {
- Copyright (c) 2011 by Marco van de Voort([email protected])
- member of the Free Pascal development team
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright. (LGPL-with-static-linking-exception)
- Rock bottom example of new evaluator helper function.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- }
- {$mode delphi}
- Uses Symbolic,Classes,sysutils;
- var s : AnsiString;
- a : extended;
- b : integer;
-
- begin
- // quickevaluate('expression',[],[]); evaluates a constant expression to an
- // extended result
- s:='(5+5+10)*2';
- writeln(s,'=',QuickEvaluate(s,[],[]):10:1);
- // ... but still allows variables:
- a:=2.0;
- b:=3;
- s:='(5+A+10)*B';
- // variable names are case sensitive!
- writeln(s,'=',QuickEvaluate(s,['A','B'],[a,b]):10:1,' with A=',a:0:1,' and B=',b);
- // now let's do that again, but add a symbol (C) that we don't define:
- try
- a:=2.0;
- b:=3;
- s:='(5+A+10)*B+C';
- // variable names are case sensitive!
- writeln(s,'=',QuickEvaluate(s,['A','B'],[a,b]):10:1,' with A=',a:0:1,' and B=',b);
- except
- on E:Exception do
- Writeln('An exception occurred: ',e.message);
- end;
- end.
|