te recomiendo lo siguiente.
antes de calcular la fórmula, el texto que la contiene debe pasar por un pre procesador, que permita reemplazar las variables globales por sus valores puntuales.
te recomiendo que las variables globales comiencen con un caracter especial que indique la presencia de las mismas.
Ej:
string formula = "( 20 * 0.11 * :var1 ) / :var2" fíjate en los : antes de cada variable.
segundo: aquí hay un problema de lógica, debido a que si vas a analizar cada variable global y reemplazar por el valor, vas a tener que preguntar y asignar de manera fija cada una de ellas.
entonces se soluciona así.
por un lado tienes tus variables globales, con sus valores puntuales.
por otro lado debes tener una clase que contenga dos arrays, uno de tipo string y otro de tipo any.
la idea es tener una asociación entre la variable global y su valor especificando un nombre para acceder de forma indexada.
//global variables
double g_var1 = 10
//variable registry : es un objeto que contiene los dos arrays
vreg.registerVariable("VAR1", g_var1)
//luego, para reemplazar la fórmula, necesitarías un método que permita tomar un valor //según su key
vreg.getVariableByKey("var1") //esto responde any y contiene el valor de la variable
//a ser reemplazada en la cadena de caracteres.
todo es cuestión de que los índices de los keys sean los valores que utilizas en la construcción de las fórmulas....
TIPS:
- Puedes hacer la asociación de key - value en un datawindow.
El resto es creatividad tuya.
OJO: aclaro que desde mi punto de vista, hay algo muy mal aquí, si usas variables globales. no es una buena arquitectura. deberías leer un poco sobre como estructurar mejor una programación OO. aunque el pb no es precisamente OO.
saludos