PDA

Ver la Versión Completa : Como puedo calcular formulas en tiempo de ejecucion


red_dragon
17-04-2013, 01:49:33
Buenas tardes a todos los intregantes de este foro.

Quisiera hacerles una pregunta, y es como consigo en un dbgrid o stringgrid insertar formulas formulas y que se realicen calculos segun las condiciones que tengan, estas formulas que estan almacenadas en una tabla, una muestra en las imagenes de abajo.

<---h t t p :// img600.imageshack.us/img600/1264/39403768.jpg

<---h t t p :// img7.imageshack.us/img7/1513/89530329.jpg

<---h t t p :// img845.imageshack.us/img845/9117/50398089.jpg

<---h t t p :// img571.imageshack.us/img571/2786/46026453.jpg

<---h t t p :// img811.imageshack.us/img811/9351/67940864.jpg


Desde ya gracias por su ayuda.

ecfisa
17-04-2013, 02:23:52
Hola red_dragon, bienvenido a Club Delphi :)

Tendrías que leer sobre Análisis y evaluación de expresiones, por ser un tema algo extenso para un mensaje te adjunto algunos enlaces:

Resolver fórmula de un string (http://www.clubdelphi.com/foros/showthread.php?t=72954&highlight=Calculadora) (C)
Evaluador de expresiones matemáticas complejas (http://html.rincondelvago.com/evaluador-de-expresiones-matematicas-complejas.html) (C++)

También podes sobre componentes que lo realizen:

Componente analizador matemático recursivo descendente, ¿dónde? (http://www.clubdelphi.com/foros/showthread.php?t=75919)
JEDI Code Library (http://sourceforge.net/projects/jcl/) (JclExprEval)

Y por supuesto podes ampliar la búsqueda en la web.

De mis épocas de facultad tengo echo un analizador recursivo de expresiones en C (tendría que buscarlo :rolleyes:). Pero en esencia, debe ser similar al código de Ñuño que encima está mantenido, mejorado y listo para la descarga en el primer enlace que te puse.

Saludos. :)

Al González
17-04-2013, 02:26:46
Quizá algo de lo siguiente sirva para ese propósito: http://www.efg2.com/Lab/Library/Delphi/MathFunctions/Parsers.htm

Nos avisas, saludos. :)

red_dragon
17-04-2013, 16:28:41
Gracias por vuestra respuesta, estaba pensando en un evaluador de expresiones que evalue y valide el codigo en runtime, y creo que va a ser asi es un trabajo duro y pesado.

Quiero comentarles que tambien me encontre con un componente se llama ArtFormula lo encuentran en (h t t p ://artsoft.nm.ru/works.html#formula) maneja un monton de operaciones logicas, aritmeticas, condicionales y mas solo que no se como hacer para que evalue datos sacados de una tabla. por ejem.

if (nombre_tabla.campo=3) then b3=3 endd

Donde b3 es la celda de un stringgrid.

Bueno algo asi que evalue tambien datos sacados de una tabla, pues por mas vueltas que le doy no le encuentro la solucion, desde ya gracias por su respuesta.