Via Cà Matta 2 - Peschiera Borromeo (MI)
+39 02 00704272
info@synaptica.info

Delphi TIP – Function Parser

Digital Innovation Partner

Delphi TIP – Function Parser

 

 

Grazie alla grande libreira open source di classi fornita da JEDI , reperibile al sito http://www.delphi-jedi.org/ la VCL di qualsiasi versione di Delphi si arricchisce di un infinità di componenti e classi che definirei indispensabili per lo sviluppo di applicazioni in questo ambiente.

Tra le tantissime cose c’è la libreria JclExprEval che permette di integrare un potente e flessibile motore di valutazione di espressioni matematiche all’interno della vs applicazione.

Il funzionamento è molto semplice, è sufficiente creare un istanza della classe TEvaluator contenuta nella libreria JclExprEval e passare alla funzione Evaluate una stringa che rappresenta una funzione ed otterremo un numero decimale come risultato.

ad esempio :

uses JclMath,JclComplex,JclExprEval;

procedure TForm1.Button1Click(Sender: TObject);
Var
  ev : JclExprEval.TEvaluator;
begin
  ev := JclExprEval.TEvaluator.Create;
  ShowMessage(FloatToStr(ev.Evaluate('1*2/3')));
end;

la classe TEvaluator prevede anche l’istruzione AddFunc che permette di estendere il set di funzioni disponibili per eseguire la funzione, come mostrato nel seguente esempio:

uses JclMath,JclComplex,JclExprEval;

procedure TForm1.Button1Click(Sender: TObject);
Var
 ev : JclExprEval.TEvaluator;
begin
 ev := JclExprEval.TEvaluator.Create;

// Functions
 ev.AddFunc('ArcTan2', ArcTan2);
 ev.AddConst('Pi', Pi);
 ev.AddFunc('cos', Cos);
 //ev.AddFunc('sqrt', sqrt2);
 ev.AddFunc('cot', Cot);

 ev.AddFunc('Log10', LogBase10);
 ev.AddFunc('Log2', LogBase2);
 ev.AddFunc('logN', LogBaseN);

 ShowMessage(FloatToStr(ev.Evaluate('cos(1*3)')));
end;

Lascia un commento