Archivo por días: 26 agosto, 2020

Cálculos aritméticos en tu código con EvaluarExpresiones

Pues eso… ya he corregido y actualizado el código de evaluar expresiones aritméticas que publiqué inicialmente en octubre de 2007. Además he ampliado la funcionalidad que tenía usando algunas cosas que ya hacía en la versión que creé en su día con Visual Basic 6 (cFormulas – Una clase para analizar expresiones numéricas).

Como por ejemplo poder definir variables y funciones propias, además de poder usar contenido entre comillas dobles (solo para mostrar, no es que utilice variables alfanuméricas).

Para usar el «evaluador de expresiones» necesitas tener una referencia a la DLL (elGuille.EvaluarExpresiones.dll) en tu proyecto de .NET (al menos funciona con Visual Basic y C#) y tener instalado al menos el .NET 4.7.

Crear una variable a la que asignes una nueva instancia de elGuille.Developer.EvaluarFunciones.
Dim ev As New elGuille.Developer.EvaluarFunciones.

Si quieres añadir variables antes de empezar a usar el método Evalua, lo puedes hacer con ev.NewVariable(«A», «123+5+2″) y si quieres crear una función, hazlo con ev.NewFunction(«Doble», «N», «N*2»). Si quieres hacer varias asignaciones de un golpe, puedes usar ev.AsignarVariables(«C=A+B: D=12345: F=A*D»).

Y para evaluar las diferentes expresiones usa el método Evalua al que le pasarás como argumento una cadena con el «texto» a evaluar, por ejemplo:
resultado = ev.Evalua(«X=10:A=5*3: P=3.14: X + A + P»)

Descargar el código fuente y la DLL

El código completo de la DLL está en EvaluarExpresiones_src.zip que tiene un tamaño de 191 KB (195.897 bytes) y que puedes descargar pulsando directamente en el enlace anterior (está en el sitio downloads.elguille.info).
Revisión v.58 del 29/Ago/2020

Ese código es un proyecto de Visual Basic .NET.

En otra ocasión actualizaré este artículo para poner algunos ejemplos de uso. Aunque los publicados en los dos enlaces que te puse al principio te pueden servir.

Espero que te sea de utilidad… ya sabes… de eso es de lo que se trata 😉

Nos vemos.
Guillermo